Maven项目构建旧版HTTP Client示例遇setSSLContext方法找不到问题
构建错误原因及解决方法
错误原因
Apache HttpClient 4.4版本的HttpClientBuilder类未提供setSSLContext()方法,该方法是从4.5版本起新增的API。你之前手动导入的JAR包为4.5及以上版本,因此代码可正常运行;但Maven依赖指定了4.4版本,API版本不兼容导致编译报错。
解决方法
方法一:升级HttpClient依赖版本
修改pom.xml中的httpclient依赖版本为4.5或更高(推荐使用兼容JDK1.8的稳定版本,如4.5.13):
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>
修改完成后重新执行mvn clean install -U即可完成构建。
方法二:适配HttpClient 4.4版本API
若需保留4.4版本,需调整代码,使用该版本支持的方式配置SSLContext:
- 基于已有SSLContext创建
SSLConnectionSocketFactory实例:
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext);
- 通过
HttpClientBuilder的setSSLSocketFactory()方法配置:
HttpClient client = HttpClientBuilder.create() .setSSLSocketFactory(sslSocketFactory) // 其他配置项 .build();
内容的提问来源于stack exchange,提问作者jstack100
相关产品推荐
相关产品推荐

