研究框架我們不但要學會怎麼使用,而且還要知道它的底層工作原理,對原理的瞭解程度決定了你能解決問題的程度,當開發中遇到問題的時候我們才能快速的定位問題 ,快速的透過它的現象看到他的本質,關於源碼解析我們只看核心邏輯,要避免深入代碼細節無法自拔或長篇大論不知道所云的錯誤,本專欄的同步視頻教程已經發布到csdn學院,地址如下:https://edu.csdn.net/course/detail/29076
我們知道請求被五個攔截器由上向下層層包裝處理,然後再由下到上追層將相應結果處理返回,每個請求實體和響應實體的構建都是通過建造者設計模式去完成的,責任鏈負責流程的控制,而建造者負責對每個對象的控件,責任鏈在於把控整個全局,而建造者更加關注是每個對象的細節,這纔是真個okhttp框架的靈魂所在,他們各自具體功能職責如下所示:
RetryAndFollowUpInterceptor:重試及重定向攔截器
BridgeInterceptor:橋接攔截器
CacheInterceptor:緩存攔截器
ConnectInterceptor:連接攔截器
CallServerInterceptor:讀寫攔截器
儘管每個攔截器的具體職責不一樣,但是他們的處理套路都是一致的,首先對請求的Request進行處理,接着執行下一個攔截器,然後對Response進行處理,最後返回Response給上一個攔截器
@Override public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
//1.Request階段
//2.把請求傳遞給下一個攔截器
response = ((RealInterceptorChain) chain).proceed(request, streamAllocation, null, null);
//3.Response階段