1.OkHttpClient:
OkHttp框架的客戶端,是一個用戶面板;通過它對OkHttp進行各種設置,網絡請求都是通過OkHttpClient完成的,每個OkHttpClient內部都維護了自己的任務隊列、連接池、Cache、攔截器等
2.Call:
描述一個實際的訪問請求,用戶的每一個網絡請求都是一個Call實例;實際實現是RealCall和AsyncCall
3.Dispatcher
任務調度器,維護了一個線程池,維護了三個雙端隊列,一個用於同步請求,兩個用於異步請求
4.ExchangeCodec
協議層,分別支持HTTP1.1和HTTP2.0,對HTTP請求編碼和響應解碼
5.Exchange
傳輸單個HTTP請求和響應對,處理ExchangeCodec這個實際I/O
6.ExchangeFinder
Exchange輔助查找類
7.RealConnection
描述一個物理socket連接,連接池中維護多個RealConnection實例
8.RealConnectionPool
連接池,存儲RealConnection連接
9.ConnectionPool
連接池,內部持有RealConnectionPool,通過它來及進行連接池的複用
10.StreamAllocation
由於Http/2支持多路複用,一個RealConnection可以支持多個網絡訪問請求,所以OkHttp又引入了StreamAllocation來描述一個實際的網絡請求開銷(從邏輯上一個Stream對應一個Call,但在實際網絡請求過程中一個Call常常涉及到多次請求。如重定向,Authenticate等場景。所以準確地說,一個Stream對應一次請求,而一個Call對應一組有邏輯關聯的Stream),一個RealConnection對應一個或多個StreamAllocation,所以StreamAllocation可以看做是RealConenction的計數器,當RealConnection的引用計數變爲0,且長時間沒有被其他請求重新佔用就將被釋放。
00261
11.Transmitter
發射器,更準確的說是用來通知和調度網絡請求的,作用在整個網絡請求生命週期;OkHttp的應用程序和網絡層之間的橋樑。此類公開高級應用程序層:連接,請求,響應和流;也是用來計算RealConnection的連接引用,判定是否爲空閒連接
12.RealInterceptorChain
攔截器鏈對象,操作整個鏈式,每一次調用一個攔截器
13.CookieJar
負責cookie的存取
最後獻上一份添加了註釋的源碼 https://github.com/525642022/okhttpTest/blob/master/README.md
哈哈