Android OkHttp信任所有证书
程序员文章站
2022-07-10 15:24:08
...
一、创建OkHttpClient
mOkHttpClient = new OkHttpClient.Builder()
.retryOnConnectionFailure(false)//允许失败重试
.readTimeout(TIMEOUT, TimeUnit.SECONDS)//设置读取超时时间
.writeTimeout(TIMEOUT, TimeUnit.SECONDS)//设置写的超时时间
.connectTimeout(TIMEOUT, TimeUnit.SECONDS)//设置连接超时时间
.pingInterval(PING_TIME, TimeUnit.SECONDS)//心跳
.certificatePinner(CertificatePinner.DEFAULT)
.hostnameVerifier(SSLSocketClient.getHostnameVerifier())//配置
.sslSocketFactory(SSLSocketClient.getSSLSocketFactory(),
SSLSocketClient.getX509TrustManager())
//设置cookie,后台需要如果不设置,连接不上
.cookieJar(new CookieJarImpl(PersistentCookieStore.getInstance()))
.addInterceptor(new UserAgentInterceptor())
.build();
二、SSLSocketClient.class
public class SSLSocketClient {
//获取这个SSLSocketFactory
public 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);
}
}
//获取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;
}
//获取HostnameVerifier
public static HostnameVerifier getHostnameVerifier() {
HostnameVerifier hostnameVerifier = (s, sslSession) -> true;
return hostnameVerifier;
}
public static X509TrustManager getX509TrustManager() {
X509TrustManager x509TrustManager = 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[0];
}
};
return x509TrustManager;
}
}
推荐阅读
-
Android OkHttp信任所有证书
-
Java 信任所有SSL证书(解决PKIX path building failed问题)
-
Java 信任所有SSL证书(解决PKIX path building failed问题)
-
【笔记】Java 信任所有SSL证书(解决PKIX path building failed问题)
-
Android开发之信任所有https证书
-
httpclient 忽略https,信任所有证书
-
[httpclient学习]-httpclient 4.3 https信任所有证书
-
java信任所有证书
-
HttpClient建立HTTPS链接时信任所有证书
-
Https请求验证证书失败解决方法!(信任所有证书)