okhttp攔截器之ConnectInterceptor解析

主流程分析: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攔截器繼續處理。

相關文章
相關標籤/搜索