小说更新请求忽略SSL证书

This commit is contained in:
xiongxiaoyang 2019-12-12 17:53:01 +08:00
parent 7330fcaae8
commit 4077ab9666

View File

@ -1,7 +1,12 @@
package xyz.zinglizingli.common.utils; package xyz.zinglizingli.common.utils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.Charsets; import org.apache.commons.codec.Charsets;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
@ -9,7 +14,9 @@ import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.security.cert.X509Certificate;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -22,15 +29,33 @@ public class RestTemplateUtil {
private static Map<String,RestTemplate> restTemplateMap = new HashMap<>(); private static Map<String,RestTemplate> restTemplateMap = new HashMap<>();
@SneakyThrows
public static RestTemplate getInstance(Charset charset) { public static RestTemplate getInstance(Charset charset) {
RestTemplate restTemplate = restTemplateMap.get(charset.name()); RestTemplate restTemplate = restTemplateMap.get(charset.name());
if(restTemplate == null) { if(restTemplate == null) {
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
httpRequestFactory.setConnectionRequestTimeout(3000);
httpRequestFactory.setConnectTimeout(3000); //忽略证书
httpRequestFactory.setReadTimeout(10000); SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
restTemplate = new RestTemplate(httpRequestFactory); .loadTrustMaterial(null, acceptingTrustStrategy)
.build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.build();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
requestFactory.setConnectionRequestTimeout(3000);
requestFactory.setConnectTimeout(3000);
requestFactory.setReadTimeout(10000);
restTemplate = new RestTemplate(requestFactory);
List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters(); List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters();
for (HttpMessageConverter<?> httpMessageConverter : list) { for (HttpMessageConverter<?> httpMessageConverter : list) {
if (httpMessageConverter instanceof StringHttpMessageConverter) { if (httpMessageConverter instanceof StringHttpMessageConverter) {