我用过
implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.2'
此依赖项不存在 setSSLSocketFactory() 方法
看来现在应该在 ConnectionManager 上设置 SSLSocketFactory
请参阅此处的官方文档和示例:迁移到 Apache HttpClient 5.x 经典 API
我做到了,效果很好
从@Ayshan的评论中得到答案:
SSLContext sslContext = sslContextBuilder.build();
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509", "SunJSSE");
keyManagerFactory.init(clientStore, "".toCharArray());
sslContext.init(keyManagerFactory.getKeyManagers(), null, new java.security.SecureRandom());
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
HttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create().setSSLSocketFactory(socketFactory).build();
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connectionManager).build();
确保所有http组件都是从http客户端5导入的。