亲测很管用,步骤如下:
1,新TrustAllcert类实现X509TrustManager接口:
- public class TrustAllCerts implements 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];}
- }
2,方法createSSLSocketFactory()调用类TrustAllcert,获取SSLSocketFactory:
- private static SSLSocketFactory createSSLSocketFactory() {
- SSLSocketFactory ssfFactory = null;
-
- try {
- SSLContext sc = SSLContext.getInstance("TLS");
- sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
-
- ssfFactory = sc.getSocketFactory();
- } catch (Exception e) {
- }
-
- return ssfFactory;
- }
- }
3,初始化OKHttpClient配置:
- OkHttpClient.Builder builder = new OkHttpClient.Builder();
- builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
- builder.sslSocketFactory(createSSLSocketFactory());
- builder.hostnameVerifier(new HostnameVerifier() {
- @Override
- public boolean verify(String hostname, SSLSession session) {
- return true;
- }
- });
好了,搞定了。此方法是okHttp信任所有的https。