OKHttp实现原理

用通俗易懂的话解释OKHttp实现原理:

先Build OkHttpClient  再 Build Request Call call = OkHttpClient.newCall(request),

call对应着同步和异步两种方法。

OkHttpClient算是执行调用请求Call的工厂,这个工厂将会被用来发送Http请求和读取他们的返回,每一个Client都有自己的一个连接池connection pool和线程池thread pools。

Call实际上是被放到了Dispatcher中,Dispatcher中有同步和异步两种队列,使用ExecutorService来执行。

Call 是个接口,实现在RealCall中,RealCall实现了同步和异步两种方法都是调用的Dispatcher中的同步和异步方法。每个Call只能被执行一次。

Response 是通过 getResponseWithInterceptorChain()返回的。

Interceptor是OKHttp最核心的东西,它把实际的网络请求、缓存 、透明压缩等功能都统一了起来。每个功能都是一个Interceptor,他们形成一个Interceptor.Chain。(责任链模式)

HttpStream这个接口的实现类,Http1xStream和Http2xStream,分别对应Http1.1协议和Http/2和SPDY协议,通过writeRequestHeaders开始写入请求头到服务器,createRequestBody用于获取写入流来写入请求体。readResponseHeaders用于读取响应头,openResponseBody用于打开一个响应体。

StreamAllocation

流分配器,该类用于协调连接、流和请求三者之间的关系。通过调用newStream可以获取一个HttpStream实现


RetryAndFollowUpInterceptor

  • 创建StreamAllocation,以此传入到后续的Interceptor中

  • 处理重定向的Http响应

BridgeInterceptor

     处理Header和Cookie

CacheInterceptor使用了DiskLruCache
ConnectInterceptor
CallServerInterceptor




转载于:https://juejin.im/post/5b617a3be51d45172831febc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值