You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8中Apache HttpClient PATCH请求遇TrustAllStrategy类找不到错误求助

使用Apache HttpClient发起PATCH请求时遇到NoClassDefFoundError错误

问题背景

使用Apache HttpClient库通过PATCH方法向REST API提交JSON Payload,Java版本为1.8.0_171。

参考代码片段

try {

    // 跳过SSL主机名校验并信任所有证书,也可以使用普通HttpClient
    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) {
    // 处理异常
}

我的实现代码

import java.util.Base64;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPatch;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.TrustAllStrategy;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;


public class Connect2Client {
public static void main(String[] args) {
    String url = "https://client.domain.com/client/api/A1234";

    String Credentials = "XXXX";
    String paylod="[{ \"op\": \"add\", \"path\": \"/progressTrail\", \"value\": \"messageType update\", \"from\" : \"string\" } ]";
    try {
        String returnPayload=connect(url, Credentials, paylod);
    } catch (Exception e) {
        // 自动生成的catch块
        e.printStackTrace();
    }
}

public static String connect(String url, String Credentials, String data) throws Exception {
    String resp = null;
     // 跳过SSL主机名校验并信任所有证书,也可以使用普通HttpClient
    CloseableHttpClient httpClient = HttpClientBuilder.create().setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, TrustAllStrategy.INSTANCE).build())
            .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
    HttpPatch request = new HttpPatch(url);
    StringEntity params = new StringEntity(data);
    String authStringEnc = Base64.getEncoder().encodeToString(Credentials.getBytes());
    request.setEntity(params);
    request.addHeader("Content-Type", "application/json-patch+json");
    request.addHeader("Authorization", "Basic " + authStringEnc);
    HttpResponse response = httpClient.execute(request); 
    System.out.println("GET Response Status:: "
            + response.getStatusLine().getStatusCode());
    return resp;
}
}

已引入的依赖Jar包

  • httpclient-4.5.14
  • httpcore-4.4.15

运行时抛出的错误

java.lang.NoClassDefFoundError: org/apache/http/conn/ssl/TrustAllStrategy 

补充信息

已通过反编译工具确认httpclient jar包中确实存在TrustAllStrategy类,但问题依然存在,求解决该错误的方法。


内容的提问来源于stack exchange,提问作者Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:24:56