我有一个代码如下:
RestTemplate restTemplate = new RestTemplate();
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient closableHttpClient = HttpClients.custom().setSSLSocketFactory(csf).build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient((HttpClient) closableHttpClient);
restTemplate = new RestTemplate(requestFactory);
在上面的代码中,我试图跳过 SSL 验证。
问题:从Spring Boot版本2.7升级到3.3并从Apachehttpclient4升级到httpclient5时,显示
HttpComponentsClientHttpRequestFactory
已被弃用。
如何解决这个问题?
HttpComponentsClientHttpRequestFactory
在 Spring Boot 3.3 中并未弃用。
阅读 Java 文档这里。
我已更新您的代码以修复与 httpclient5 的兼容性问题。
RestTemplate restTemplate = new RestTemplate();
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
HttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create().setSSLSocketFactory(csf).build();
CloseableHttpClient closableHttpClient = HttpClients.custom().setConnectionManager(connectionManager).build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(closableHttpClient);
restTemplate = new RestTemplate(requestFactory);
看看这是否有帮助。