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