package com.zy.asrs.common.utils;
|
|
|
import okhttp3.ConnectionPool;
|
import okhttp3.OkHttpClient;
|
|
import java.net.Proxy;
|
import java.security.KeyStore;
|
import java.security.SecureRandom;
|
import java.security.cert.X509Certificate;
|
import java.util.Arrays;
|
import java.util.concurrent.TimeUnit;
|
import javax.net.ssl.*;
|
|
public class OKHttpUtil {
|
private static OkHttpClient okHttpClient;
|
public static ConnectionPool connectionPool = new ConnectionPool(10, 5, TimeUnit.MINUTES);
|
|
public static OkHttpClient getInstance() {
|
if (okHttpClient == null) { //加同步安全
|
synchronized (OkHttpClient.class) {
|
if (okHttpClient == null) { //okhttp可以缓存数据....指定缓存路径
|
okHttpClient = new OkHttpClient.Builder()//构建器
|
.proxy(Proxy.NO_PROXY) //来屏蔽系统代理
|
.connectionPool(connectionPool)
|
.sslSocketFactory(getSSLSocketFactory(), getX509TrustManager())
|
.hostnameVerifier(getHostnameVerifier())
|
.connectTimeout(10, TimeUnit.SECONDS)//连接超时
|
.writeTimeout(600, TimeUnit.SECONDS)//写入超时
|
.readTimeout(600, TimeUnit.SECONDS)//读取超时
|
.build();
|
okHttpClient.dispatcher().setMaxRequestsPerHost(200);
|
okHttpClient.dispatcher().setMaxRequests(200);
|
}
|
}
|
}
|
return okHttpClient;
|
}
|
|
/**
|
* description 忽略https证书验证
|
*/
|
private static HostnameVerifier getHostnameVerifier() {
|
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
|
@Override
|
public boolean verify(String s, SSLSession sslSession) {
|
return true;
|
}
|
};
|
return hostnameVerifier;
|
}
|
/**
|
* description 忽略https证书验证
|
*/
|
private static SSLSocketFactory getSSLSocketFactory() {
|
try {
|
SSLContext sslContext = SSLContext.getInstance("SSL");
|
sslContext.init(null, getTrustManager(), new SecureRandom());
|
return sslContext.getSocketFactory();
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
private static X509TrustManager getX509TrustManager() {
|
X509TrustManager trustManager = null;
|
try {
|
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
trustManagerFactory.init((KeyStore) null);
|
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
|
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
|
throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
|
}
|
trustManager = (X509TrustManager) trustManagers[0];
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return trustManager;
|
}
|
|
private static TrustManager[] getTrustManager() {
|
TrustManager[] trustAllCerts = new TrustManager[]{
|
new X509TrustManager() {
|
@Override
|
public void checkClientTrusted(X509Certificate[] chain, String authType) {
|
}
|
|
@Override
|
public void checkServerTrusted(X509Certificate[] chain, String authType) {
|
}
|
|
@Override
|
public X509Certificate[] getAcceptedIssuers() {
|
return new X509Certificate[]{};
|
}
|
}
|
};
|
return trustAllCerts;
|
}
|
}
|