Retrofit/Okhttp Https兼容到Http降级处理实践(信任所有https)

来源:互联网 发布:淘宝注册账号注册不了 编辑:程序博客网 时间:2024/05/18 17:28

Tamic /http://blog.csdn.net/sk719887916/article/details/51597816
尊重原创,授权请访问:http://www.banquanyin.com/u/101701130004540

之前出的一篇文章 - Retrofit 2.0 超能实践,完美支持Https传输详细介绍了使用okhttp支持https的步骤,很多人要的是所以一切Https都要免信任,实则就是全部放开,那么下面的代码就是介绍如何将okHttp进行免信任Https链接。

信任所有https

信任所有https请求,也就是放行所有的证书验证,具体可以直接将OkHttpClientHostnameVerifier设置为true

OkHttpClient client = new OkHttpClient();client.setHostnameVerifier(new HostnameVerifier() {    @Override    public boolean verify(String s, SSLSession sslSession) {        return true;    }});TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {    @Override    public void checkClientTrusted(            java.security.cert.X509Certificate[] x509Certificates,            String s) throws java.security.cert.CertificateException {    }    @Override    public void checkServerTrusted(            java.security.cert.X509Certificate[] x509Certificates,            String s) throws java.security.cert.CertificateException {    }    @Override    public java.security.cert.X509Certificate[] getAcceptedIssuers() {        return new java.security.cert.X509Certificate[] {};    }} };try {   //构造自己的SSLContext    SSLContext sc = SSLContext.getInstance("TLS");    sc.init(null, trustAllCerts, new java.security.SecureRandom());    client.setSslSocketFactory(sc.getSocketFactory());} catch (Exception e) {    e.printStackTrace();}

接着设置协议为 1.1(Protocol.HTTP_1_1)

    client.protocols(Collections.singletonList(Protocol.HTTP_1_1))     .build();

目前OKhttp3.5 已经将setHostnameVerifier函数 放到builder当中了,你可以使用 OkHttpClientbuilder.HostnameVerifier进行操作,实则内部调用都一样。

衍生

目前众多框架使用okhttp, 著名的有picasso, glide, Retrofit等,通过上面的姿势,就能很好的让这些框架默认支持Https链接 。

今天的文章比较简短,但实用性比价高

阅读推荐

  • Retrofit 2.0 超能实践,完美支持Https传输

  • Retrofit/Okhttp API接口加固技术实践(上)

  • Retrofit/OkHttp API接口加固技术实践(下)

Tamic http://blog.csdn.net/sk719887916/article/details/51597816
尊重原创,授权请访问:http://www.banquanyin.com/u/101701130004540

1 0
原创粉丝点击