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,interceptor
:interceptor
可以說是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 返回所有的...