okhttp拦截器之ConnectInterceptor解析

主流程分析:java

继续分析okhttp的拦截器,继上次分析了CacheInterceptor缓存拦截器以后,接下来到链接拦截器啦,以下:缓存

打开看一下它的javadoc:服务器

而整个它的实现不长,以下:网络

也就是真正发起与服务器的链接就是从这个拦截器开始滴,仍是按惯例分析拦截器就得看它的intercept()方法,以下:spa

其中这个对象的建立是在以前我们分析的第一个重试拦截器里面,这里再来回顾一下其拦截器的调用顺序:3d

而StreamAllocation的建立在这:对象

好,回到我们主流程继续往下:blog

面HttpCodec是封装了Reqeust和Response的信息,如javadoc所描述:io

该对象就是进行实际网络的IO传输的,最后则拦截器链继续往下走:stream

总结其主流程的步骤:

一、ConnectorIntercepter获取Interceptor传过来的StreamAllocation,streamAllocation.newStream()。

二、将刚才建立的用于网络IO的RealConnection对象,以及对于与服务器交互最为关键的HttpCodec等对象传递给后面的拦截器。

细节拓展:

首先来看一下生成HttpCodec对象的具体细节:

跟到newStream()方法:

那findHealthyConnection()方法里面作了啥呢?

另外对于这个方法也来进一步观察一下:

该方法的主要做用先来看一下javadoc对它的描述:

那真正链接又如何搞的呢?

 

至此其核心流程就已经分析完了,总结一下其过程:

一、建立一个RealConnection对象。

二、选择不一样的连接方式。

三、转由CallServerInterceptor拦截器继续处理。

相关文章
相关标签/搜索