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