OkHttp3原始碼解析

2021-08-08 02:37:26 字數 926 閱讀 3551

compile 'com.squareup.okhttp3:okhttp:3.6.0'最新版本

okhttp的最底層是使用socket,而不是urlconnection,它通過platform的class.forname()反射獲得當前runtime使用的socket庫。

okhttp3使用場景特點:資料量大,網路請求頻繁等。

1,okhttpclient:okhttp請求客戶端,builder模式實現

2,dispatcher:本質是非同步請求的排程器,負責排程非同步請求的執行,控制最大請求併發數和單個主機的最大併發數,並持有有乙個執行緒池負責執行非同步請求,對同步請求只是作統計操作。

3,request:網路請求,builder模式實現

4,response:網路請求對應的響應,builder模式實現,真正的response是通過realcall.getresponsewithinterceptorchain()方法獲取的。

5,connectionpool:socket連線池

6,interceptorinterceptor可以說是okhttp的核心功能,它就是通過interceptor來完成監控管理,重寫和重試請求的。

7,cache:可以自定義是否採用快取,快取形式是磁碟快取,disklrucache

不管是同步請求還是非同步請求,都是通過realcall.getresponsewithinterceptorchain()方法獲取請求結

Okhttp3原始碼完全解析

上文已經說了,okhttp和retrofit是相輔相成的,retrofit是對okhttp的上層封裝,okhttp是http的底層實現。那麼,今天就來解析一下okhttp的原始碼。okhttp的使用如下,我們能夠看到,先是new了乙個okhttpclient,然後這個okhttpclient又new...

OkHttp3原始碼解析(二)OkHttp基本流程

首先使用okhttp發起乙個非同步請求,以此先簡單分析okhttp的大致流程。okhttp使用 okhttp流程主要類 功能 使用建造者模式初始化連線池,dispatcher等,為了節約資源推薦使用單列模式建立okhttpclient物件,維護執行緒池比較耗資源。http請求所需的url,請求方法等...

OkHttp3原始碼(二) Request

request 是對http請求報文概念的具體實現 請求報文的結構圖 根據結構圖去閱讀原始碼能很好的理解某些屬性的真實意義。我們看一下原始碼。public final class request 返回設定的url 返回設定的方法 get或post public string method 返回所有的...