主流程分析:
继续分析okhttp的拦截器,继上次分析了CacheInterceptor缓存拦截器之后,接下来到连接拦截器啦,如下:

打开看一下它的javadoc:

而整个它的实现不长,如下:

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

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

而StreamAllocation的创建在这:


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

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


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

总结其主流程的步骤:
1、ConnectorIntercepter获取Interceptor传过来的StreamAllocation,streamAllocation.newStream()。
2、将刚才创建的用于网络IO的RealConnection对象,以及对于与服务器交互最为关键的HttpCodec等对象传递给后面的拦截器。
细节拓展:
首先来看一下生成HttpCodec对象的具体细节:

跟到newStream()方法:

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




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

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




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






至此其核心流程就已经分析完了,总结一下其过程:
1、创建一个RealConnection对象。
2、选择不同的链接方式。
3、转由CallServerInterceptor拦截器继续处理。