OkHttp3源碼解析

OkHttp3

An HTTP &HTTP/2 client for Android and Java application.(HTTP網絡框架)
compile 'com.squareup.okhttp3:okhttp:3.6.0'當前最新版本
OkHttp的最底層是使用Socket,而不是URLConnection,它經過Platform的Class.forName()反射得到當前Runtime使用的Socket庫。

OkHttp3使用場景特色:數據量大,網絡請求頻繁等。

OkHttp中的重要類:

1,OkHttpClient:OkHttp請求客戶端,Builder模式實現緩存

2,Dispatcher:本質是異步請求的調度器,負責調度異步請求的執行,控制最大請求併發數和單個主機的最大併發數,並持有有一個線程池負責執行異步請求,對同步請求只是做統計操做。網絡

3,Request:封裝網絡請求,就是構建請求參數(如url,header,請求方式,請求參數),Builder模式實現併發

4,Response:網絡請求對應的響應,Builder模式實現,真正的Response是經過RealCall.getResponseWithInterceptorChain()方法獲取的。app

5,Call:是根據Request生成的一個具體的請求實例,且一個Call只能被執行一次。框架

6,ConnectionPool:Socket鏈接池異步

7,InterceptorInterceptor能夠說是OkHttp的核心功能,它就是經過Interceptor來完成監控管理,重寫和重試請求的。ide

8,Cache:能夠自定義是否採用緩存,緩存形式是磁盤緩存,DiskLruCache源碼分析

無論是同步請求仍是異步請求,都是經過RealCall.getResponseWithInterceptorChain()方法獲取請求結

果的,只不過在前者在主線程中執行,然後者在線程池中的線程中執行的。

思想記錄:

OkHttp3,網絡請求庫,同步請求RealCall.execute()和異步請求RealCall.enqueue(),請求任務都是交給Dispatcher調度請求任務的處理,請求經過一條攔截鏈,每個攔截器處理一部分工做,最後一個攔截器,完成獲取請求任務的響應,會將響應沿着攔截鏈向上傳遞。

OkHttp3的緩存設置

Retrofit2.0+okhttp3緩存機制以及遇到的問題 - Picasso_L的專欄 - CSDN博客ui

OkHttp源碼解析

根據Interceptor分析OKHttp

OkHttp 3.7源碼分析-雲棲社區

深刻淺出OkHttp源碼

相關文章
相關標籤/搜索