Spring Boot 3.3 已弃用 HttpComponentsClientHttpRequestFactory

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

我有一个代码如下:

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
已被弃用。

如何解决这个问题?

java spring spring-boot apache-httpcomponents apache-httpclient-5.x
1个回答
0
投票

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);

看看这是否有帮助。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.