OkHttp的Https认证问题

2019-01-11  本文已影响0人  Dale_Dawson

        之前项目在上线前,用的都是http打头的接口地址,产品准备上线,然后全部接口换成https打头的,之前写的okhttp访问出现了问题,经过查询相关资料,okhttp如需访问https,需要做以下操作

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认证问题。

上一篇 下一篇

猜你喜欢

热点阅读