Ays*_*eva 12 java httpclient ssl-certificate spring-boot apache-httpclient-5.x
我用过
implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.2'
Run Code Online (Sandbox Code Playgroud)
此依赖项不存在 setSSLSocketFactory() 方法
Kha*_*kri 13
看来 SSLSocketFactory 现在应该设置在设置
请参阅此处的官方文档和示例:Migration to Apache HttpClient 5.x classic APIs
示例代码:
PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create()
.setSslContext(SSLContexts.createSystemDefault())
.setTlsVersions(TLS.V_1_3)
.build())
.setDefaultSocketConfig(SocketConfig.custom()
.setSoTimeout(Timeout.ofMinutes(1))
.build())
.setPoolConcurrencyPolicy(PoolConcurrencyPolicy.STRICT)
.setConnPoolPolicy(PoolReusePolicy.LIFO)
.setDefaultConnectionConfig(ConnectionConfig.custom()
.setSocketTimeout(Timeout.ofMinutes(1))
.setConnectTimeout(Timeout.ofMinutes(1))
.setTimeToLive(TimeValue.ofMinutes(10))
.build())
.build();
HttpClient httpClient = HttpClientBuilder
.create()
.setConnectionManager(connectionManager)
.build();
Run Code Online (Sandbox Code Playgroud)
我做到了并且工作正常
Aru*_*wda 13
从@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();
Run Code Online (Sandbox Code Playgroud)
确保所有 http 组件都是从 http 客户端 5 导入的。
| 归档时间: |
|
| 查看次数: |
14012 次 |
| 最近记录: |