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

  • 相关阅读:
    Java集合和数组的区别
    二分法查找
    功能模块划分的原则及方法
    CentOS 6.5 开机启动指定服务
    CentOS 6.5配置mysql
    CentOS 6.5安装Tcpreplay
    CentOS6.5 常用命令
    CentOS6.5 安装ntopng-1.2.0
    【转】CentOS安装PF_RING(虚拟机)
    CentOS查询 杀死进程
  • 原文地址:https://www.cnblogs.com/webor2006/p/9281429.html
Copyright © 2011-2022 走看看