okhttp源码简

最近面试中会有这种是否研究过源码的问题,这个时候能说上一段可以充分体现程序员的学习能力和钻研精神,但是时间久了这些东西终归会忘得差不多,所以整理下供自己参考。如有错误,欢迎指正,新司机上路多多关照。

okhttp的优点:1、okhttp支持SPDY协议(由谷歌研发,对http加强)

2、拥有自动维护的socket连接池,减少握手次数

3、拥有队列线程池,轻松些并发

总的来说就是,效率高,安全。



首先创建一个okhttpclient,然后创建一个请求(request),然后得到response,同步的调用executed(),异步的调用的方法是enqueue()。

整个框架分为三层,应用层逻辑层,链路层,

以同步的为例,在executed方法中,通过分发器dispatcher将请求添加到执行队列中(类似handler中的消息队列),通过截获器进一步封装,对请求进行压缩修改编码等处理。在逻辑层会将request和client进一步封装成HttpEngine,在HttpEngine发送请求的方法中有对缓存的处理。缓存的数据具有时效性,没有过期的直接使用,有过期的先用过期的,再去联网更新到本地,没有缓存数据,再去网络上获取。在链路层建立连接,在连接池选则一条健康的链接,选择的原则是连接池里面有就直接用,没有的话通过路径选择器去找,还没有就创建新的链接,然后把创建的链接添加到链接池。再往下就是链接socket,网络链接基于socket.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值