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