diff --git a/src/main/java/com/zhgd/config/RestTemplateConfig.java b/src/main/java/com/zhgd/config/RestTemplateConfig.java index 0578bd5..5d0bec3 100644 --- a/src/main/java/com/zhgd/config/RestTemplateConfig.java +++ b/src/main/java/com/zhgd/config/RestTemplateConfig.java @@ -2,11 +2,15 @@ package com.zhgd.config; import org.apache.http.Header; import org.apache.http.client.HttpClient; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicHeader; +import org.apache.http.ssl.SSLContexts; +import org.apache.http.ssl.TrustStrategy; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -16,7 +20,11 @@ import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; +import javax.net.ssl.SSLContext; import java.nio.charset.Charset; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -45,7 +53,7 @@ public class RestTemplateConfig { * @return HttpComponentsClientHttpRequestFactory */ @Bean - public HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() { + public HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException { //Httpclient连接池,长连接保持30秒 PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(30, TimeUnit.SECONDS); @@ -60,6 +68,9 @@ public class RestTemplateConfig { headers.add(new BasicHeader("Accept-Encoding", "gzip, deflate")); headers.add(new BasicHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")); headers.add(new BasicHeader("Connection", "keep-alive")); + TrustStrategy acceptingTrustStrategy = (x509Certificates, authType) -> true; + SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); + SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier()); //创建HttpClient HttpClient httpClient = HttpClientBuilder.create() @@ -67,6 +78,7 @@ public class RestTemplateConfig { .setDefaultHeaders(headers) .setRetryHandler(new DefaultHttpRequestRetryHandler(3, true)) //设置重试次数 .setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy()) //设置保持长连接 + .setSSLSocketFactory(connectionSocketFactory) .build(); //创建HttpComponentsClientHttpRequestFactory实例 @@ -81,7 +93,6 @@ public class RestTemplateConfig { requestFactory.setConnectionRequestTimeout(200); //缓冲请求数据,默认为true。通过POST或者PUT大量发送数据时,建议将此更改为false,以免耗尽内存 requestFactory.setBufferRequestBody(false); - return requestFactory; }