休息模板 |带有 SSL 的 HttpClient 无法设置连接池属性

问题描述

RestTemplate HTTPclient 开始显示带有 poolingConnectionManager bean 的 SSl 握手异常。

下面是我的代码-

@Bean
public CloseableHttpClient sslHttpClient() throws KeyStoreException,NoSuchAlgorithmException,KeyManagementException  {
    return HttpClients.custom()
            .setDefaultRequestConfig(getRequestConfig())
            //on uncommenting  this we start getting SSL handshake Exception
            //.setConnectionManager(poolingConnectionManager())
            .setSSLSocketFactory(csf())
            .build();
}

private RequestConfig getRequestConfig(){
    return RequestConfig.custom()
            .setConnectTimeout(connectionTimeout)
            .setConnectionRequestTimeout(connectionTimeout)
            .setSocketTimeout(socketTimeout)
            .build();
}

private SSLConnectionSocketFactory csf() throws KeyStoreException,KeyManagementException{
    TrustStrategy acceptingTrustStrategy = (x509Certificates,s) -> true;
    SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null,acceptingTrustStrategy).build();
    return new SSLConnectionSocketFactory(sslContext,new NoopHostnameVerifier());
}

@Bean
public PoolingHttpClientConnectionManager poolingConnectionManager() {
    PoolingHttpClientConnectionManager poolingConnectionManager = new PoolingHttpClientConnectionManager();
    poolingConnectionManager.setMaxTotal(restTotalConnections);
    poolingConnectionManager.setDefaultMaxPerRoute(restDefaultConnectionsPerRoute);
    return poolingConnectionManager;
}

我无法使用自定义 SSL 连接套接字工厂设置集合池属性

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)