package com.fzzy.conf; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.client.RestTemplate; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.nio.charset.StandardCharsets; import java.security.NoSuchAlgorithmException; /** * RestTemplate的配置,SpringBoot封装的HTTP协议,GET和POST请求方法 * * @author Andy * */ @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory) throws Exception { RestTemplate restTemplate = new RestTemplate(factory); // 禁用SSL证书验证 TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) { } }}; // 创建SSLContext,使用禁用SSL证书验证的TrustManager SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); // 设置全局默认的SSLSocketFactory,使RestTemplate使用禁用SSL证书验证的SSLContext HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); return restTemplate; } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(15000);// 设置连接超时,单位毫秒 factory.setReadTimeout(15000);//设置读取超时 return factory; } }