主流程分析: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拦截器继续处理。