zoukankan      html  css  js  c++  java
  • okhttp拦截器之ConnectInterceptor解析

    主流程分析:

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

  • 相关阅读:
    学习Python中的集合
    ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法
    matlab的一些关于块分类的函数~~~
    20145207 《Java程序设计》第二周学习总结
    20145207 调查问卷
    20145207 《Java程序设计》第一周学习总结
    10、装饰者模式
    9、观察者模式
    8、迭代器模式
    7、适配器模式
  • 原文地址:https://www.cnblogs.com/webor2006/p/9281429.html
Copyright © 2011-2022 走看看