当前位置: 首页 > 知识库问答 >
问题:

无效的HTTP方法:修补程序

薛兴德
2023-03-14

尝试了HttpURLConnection的其他解决方案后,无效的HTTP方法:PATCH

我得到无效的HTTP方法:补丁异常与JAVA 7。更新JAVA不在选项中,所以我必须坚持使用解决方法。

我正在使用调用来调用这样的请求

Invocation invoke = reqBuilder.build(getHTTPVerb(), Entity.entity(requestJSON, MediaType.APPLICATION_JSON));
getWebTarget().request(MediaType.APPLICATION_JSON).header("Authorization", getAuthorization()).accept(MediaType.APPLICATION_JSON);

< code>getHTTPVerb()返回字符串“POST”或“PATCH”。

使用补丁方法我遇到了问题。

在提到的问题中,我没有尝试过一种解决方案:

conn.setRequestProperty("X-HTTP-Method-Override", "PATCH");
conn.setRequestMethod("POST");

< code>conn是< code>HttpURLConnection实例。

但是我不确定如何从调用类或任何属性中获取HttpURLConnection

任何指点或帮助都将不胜感激。

共有1个答案

贺栋
2023-03-14

使用阿帕奇 http 客户端的 PATCH 方法的示例:

    try {

        //This is just to avoid ssl hostname verification and to trust all, you can use simple Http client also
        CloseableHttpClient httpClient = HttpClientBuilder.create().setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, TrustAllStrategy.INSTANCE).build())
                .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();

        HttpPatch request = new HttpPatch(REST_SERVICE_URL);
        StringEntity params = new StringEntity(JSON.toJSONString(payload), ContentType.APPLICATION_JSON);
        request.setEntity(params);
        request.addHeader(org.apache.http.HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
        request.addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
        request.addHeader(HttpHeaders.AUTHORIZATION, OAuth2AccessToken.BEARER_TYPE + " " + accessToken);
        HttpResponse response =     httpClient.execute(request);            

        String statusCode = response.getStatusLine().getStatusCode();

    } catch (Exception ex) {
        // handle exception here
    }

RestTemplate的等效示例:

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.add("Authorization", OAuth2AccessToken.BEARER_TYPE + " " + accessToken);
    final HttpEntity<String> entity = new HttpEntity<String>(JSON.toJSONString(payload), headers);
    RestTemplate restTemplate = new RestTemplate();
    try {
        ResponseEntity<String> response = restTemplate.exchange(REST_SERVICE_URL, HttpMethod.PATCH, entity, String.class);
        String statusCode =  response.getStatusCode();
    } catch (HttpClientErrorException e) {
        // handle exception here
    }
 类似资料:
  • 当我尝试使用非标准的HTTP方法时,比如带有URLConnection的补丁: 我有个例外: 使用更高级别的API(如Jersey)会产生相同的错误。是否有解决办法来发出修补程序HTTP请求?

  • 当我试图在一个基于Spring MVC的应用程序上使用PayPal REST API更新一个账单计划的状态时,我遇到了一个ProtocolException。我的堆栈跟踪如下: 原因:java.net.ProtocolException:无效HTTP方法:PATCH at Java . net . httpurlconnection . setrequest method(httpurlconne

  • 当我尝试点击具有方法的请求时,我收到以下错误:PATCH 使用JMeter版本:-apache-JMeter-5.4.1 如果我能得到专家的帮助来解决他们的问题,那将会很有帮助。 谢谢

  • 我有一个带有spring框架的Java8应用程序。我们需要从应用程序中使用REST调用补丁操作。 代码片段如下: 请指教。

  • 当我将颤振版本升级到1.7.8修补程序时,我收到了几条错误消息。3. 以下是消息: 这是我的颤振医生信息: 医生摘要(要查看所有详细信息,请运行flutter医生-v): [√] Flutter(Channel稳定,v1.7.8热修复补丁.3,在Microsoft Windows上[版本10.0.17134.885 ]) [!] Android工具链-为Android设备开发(AndroidSDK

  • 在我的API控制器类中有方法如下, 如下所示, 我从postman调用了API,并返回了它的请求。 我在Controller方法中放置了断点,但它没有命中。在我从方法参数breakpoin hit中删除了之后,没有返回。当我使用时,为什么它返回400?我如何从HTTP客户端调用这个控制器方法?。 我试过这个,它也会返回400个请求 我该怎么解决这个问题?请帮帮我。我删除了前面的问题,这才是我真正的