java - 无效的 HTTP 方法 : PATCH

标签 java http httpurlconnection java-7

尝试了 HttpURLConnection Invalid HTTP method: PATCH 中的其他解决方案后

我收到无效的 HTTP 方法:JAVA 7 的 PATCH 异常。 无法选择更新 JAVA,因此我必须坚持使用解决方法。

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

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

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

使用 PATCH 方法时我遇到了问题。

在提到的问题中,我还没有尝试过以下解决方案:

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

connHttpURLConnection 实例。

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

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

最佳答案

使用 apache 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
    }

关于java - 无效的 HTTP 方法 : PATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026770/

相关文章:

java - GsonRequest 类是一个列表

java - 优化启动画面内存

java - HttpURLConnection POST,conn.getOutputStream() 抛出异常

android - 将 HTTP Legacy 添加到 Android Studio

java - 使用 Java 将时间和日期插入数据库时​​出现问题

java - 用户空间线程和内核空间线程的示例

javascript - 如何在浏览器控制台中使用单行代码多次执行javascript命令?

java - 缓存在 JAX-RS 中是如何工作的?

Perl 在不同情况下找到有效的行对

java - 带有代码 3xx 和空 'Location' header 的 HTTP 响应