okhttp原理

本文详细介绍了OkHttp的工作流程,包括拦截器的解析,如RetryAndFollowUpInterceptor的重定向处理、BridgeInterceptor的请求与响应转换、CacheInterceptor的缓存策略以及ConnectInterceptor的连接建立。此外,还讲解了连接池的原理和Dispatcher的线程管理,最后讨论了OkHttp的设计模式和优势。
摘要由CSDN通过智能技术生成

1、okhttp工作的大致流程

2、okhttp中的连接

3、Dispatcher和线程池

4、OkHttp中的设计模式

5、OkHttp的优势

1、okhttp工作的大致流程
1.1、整体流程
(1)、当我们通过OkhttpClient创建一个Call,并发起同步或异步请求时;


(2)、okhttp会通过Dispatcher对我们所有的RealCall(Call的具体实现类)进行统一管理,并通过execute()及enqueue()方法对同步或异步请求进行处理;


(3)、execute()及enqueue()这两个方法会最终调用RealCall中的getResponseWithInterceptorChain()方法,从拦截器链中获取返回结果;


(4)、拦截器链中,依次通过RetryAndFollowUpInterceptor(重定向拦截器)、BridgeInterceptor(桥接拦截器)、CacheInterceptor(缓存拦截器)、ConnectInterceptor(连接拦截器)、CallServerInterceptor(网络拦截器)对请求依次处理,与服务的建立连接后,获取返回数据,再经过上述拦截器依次处理后,最后将结果返回给调用方。
提供两张图便于理解和记忆:

1.2、各大拦截器的原理解析
1.2.1、RetryAndFollowUpInterceptor:负责重定向
构建一个StreamAllocation对象,然后调用下一个拦截器获取结果,从返回结果中获取重定向的request,如果重定向的request不为空的话,并且不超过重定向最大次数的话就进行重定向,否则返回结果。注意:这里是通过一个while(true)的循环完成下一轮的重定向请求。
(1)、StreamAllocation为什么在第一个拦截器中就进行创建?
     

  便于取消请求以及出错释放资源。


(2)、StreamAllocation的作用是什么?
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值