OKhttp3对HTTPS的解析

本文详细介绍了OKHttp中HTTPS配置的变化,针对旧版本中已废弃的setSslSocketFactory方法提供了新的实现方案,并展示了如何通过Builder模式进行SSL Socket Factory的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/lmj623565791/article/details/48129405 鸿洋大神的这个文章说的很明白,但是随着OKhttp的改版,有的方法已经不存在了。
比如说:

mOkHttpClient.setSslSocketFactory(sslContext.getSocketFactory());

这个方法,已经没有了。
但是只要OKhttp依然支持HTTPS的解析,那么肯定还有类似的方法可以使用。
然后我们查看OKhttpClient的源码:找到了这个方法

public Builder sslSocketFactory(SSLSocketFactory sslSocketFactory) 

我们知道,一般初始化的时候OKhttp都是通过builder来创建的,以便我们设置

Builder(OkHttpClient okHttpClient) {
      this.dispatcher = okHttpClient.dispatcher;
      this.proxy = okHttpClient.proxy;
      this.protocols = okHttpClient.protocols;
      this.connectionSpecs = okHttpClient.connectionSpecs;
      this.interceptors.addAll(okHttpClient.interceptors);
      this.networkInterceptors.addAll(okHttpClient.networkInterceptors);
      this.proxySelector = okHttpClient.proxySelector;
      this.cookieJar = okHttpClient.cookieJar;
      this.internalCache = okHttpClient.internalCache;
      this.cache = okHttpClient.cache;
      this.socketFactory = okHttpClient.socketFactory;
      this.sslSocketFactory = okHttpClient.sslSocketFactory;
      this.certificateChainCleaner = okHttpClient.certificateChainCleaner;
      this.hostnameVerifier = okHttpClient.hostnameVerifier;
      this.certificatePinner = okHttpClient.certificatePinner;
      this.proxyAuthenticator = okHttpClient.proxyAuthenticator;
      this.authenticator = okHttpClient.authenticator;
      this.connectionPool = okHttpClient.connectionPool;
      this.dns = okHttpClient.dns;
      this.followSslRedirects = okHttpClient.followSslRedirects;
      this.followRedirects = okHttpClient.followRedirects;
      this.retryOnConnectionFailure = okHttpClient.retryOnConnectionFailure;
      this.connectTimeout = okHttpClient.connectTimeout;
      this.readTimeout = okHttpClient.readTimeout;
      this.writeTimeout = okHttpClient.writeTimeout;
    }

然后我们可以看到this.sslSocketFactory,所以方法我们可以改成:
builder.sslSocketFactory(setCertificates(context.getAssets().open(“-12306cn.crt”)));
因为12306的界面现在已经这里写图片描述所以我目前没有找到可测试的网站。大家感兴趣的可以自己测试使用一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值