HttpClients.custom().setSSLSocketFactory() 方法未找到

问题描述 投票:0回答:2

我用过

implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.2'

此依赖项不存在 setSSLSocketFactory() 方法

java spring-boot ssl-certificate httpclient
2个回答
10
投票

看来现在应该在 ConnectionManager 上设置 SSLSocketFactory

请参阅此处的官方文档和示例:迁移到 Apache HttpClient 5.x 经典 API

我做到了,效果很好


10
投票

从@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导入的。

© www.soinside.com 2019 - 2024. All rights reserved.