You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
Java
94 lines
3.0 KiB
Java
3 years ago
|
package com.glxp.api.config;
|
||
|
|
||
|
import okhttp3.ConnectionPool;
|
||
|
import okhttp3.OkHttpClient;
|
||
|
import org.springframework.beans.factory.annotation.Value;
|
||
|
import org.springframework.context.annotation.Bean;
|
||
|
import org.springframework.context.annotation.Configuration;
|
||
|
|
||
|
import javax.net.ssl.SSLContext;
|
||
|
import javax.net.ssl.SSLSocketFactory;
|
||
|
import javax.net.ssl.TrustManager;
|
||
|
import javax.net.ssl.X509TrustManager;
|
||
|
import java.security.KeyManagementException;
|
||
|
import java.security.NoSuchAlgorithmException;
|
||
|
import java.security.SecureRandom;
|
||
|
import java.security.cert.CertificateException;
|
||
|
import java.security.cert.X509Certificate;
|
||
|
import java.util.concurrent.TimeUnit;
|
||
|
|
||
|
@Configuration
|
||
|
public class OkHttpConfiguration {
|
||
|
|
||
|
@Value("${ok.http.connect-timeout}")
|
||
|
private Integer connectTimeout;
|
||
|
|
||
|
@Value("${ok.http.read-timeout}")
|
||
|
private Integer readTimeout;
|
||
|
|
||
|
@Value("${ok.http.write-timeout}")
|
||
|
private Integer writeTimeout;
|
||
|
|
||
|
@Value("${ok.http.max-idle-connections}")
|
||
|
private Integer maxIdleConnections;
|
||
|
|
||
|
@Value("${ok.http.keep-alive-duration}")
|
||
|
private Long keepAliveDuration;
|
||
|
|
||
|
@Bean
|
||
|
public OkHttpClient okHttpClient() {
|
||
|
return new OkHttpClient.Builder()
|
||
|
.sslSocketFactory(sslSocketFactory(), x509TrustManager())
|
||
|
// 是否开启缓存
|
||
|
.retryOnConnectionFailure(false)
|
||
|
.connectionPool(pool())
|
||
|
.connectTimeout(connectTimeout, TimeUnit.SECONDS)
|
||
|
.readTimeout(readTimeout, TimeUnit.SECONDS)
|
||
|
.writeTimeout(writeTimeout, TimeUnit.SECONDS)
|
||
|
.hostnameVerifier((hostname, session) -> true)
|
||
|
// 设置代理
|
||
|
// .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8888)))
|
||
|
// 拦截器
|
||
|
// .addInterceptor()
|
||
|
.build();
|
||
|
}
|
||
|
|
||
|
@Bean
|
||
|
public X509TrustManager x509TrustManager() {
|
||
|
return new X509TrustManager() {
|
||
|
@Override
|
||
|
public void checkClientTrusted(X509Certificate[] chain, String authType)
|
||
|
throws CertificateException {
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void checkServerTrusted(X509Certificate[] chain, String authType)
|
||
|
throws CertificateException {
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public X509Certificate[] getAcceptedIssuers() {
|
||
|
return new X509Certificate[0];
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
@Bean
|
||
|
public SSLSocketFactory sslSocketFactory() {
|
||
|
try {
|
||
|
// 信任任何链接
|
||
|
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||
|
sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom());
|
||
|
return sslContext.getSocketFactory();
|
||
|
} catch (NoSuchAlgorithmException | KeyManagementException e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
@Bean
|
||
|
public ConnectionPool pool() {
|
||
|
return new ConnectionPool(maxIdleConnections, keepAliveDuration, TimeUnit.SECONDS);
|
||
|
}
|
||
|
}
|