okhttp的應用詳解與源碼解析--攔截器源碼解析

研究框架我們不但要學會怎麼使用,而且還要知道它的底層工作原理,對原理的瞭解程度決定了你能解決問題的程度,當開發中遇到問題的時候我們才能快速的定位問題 ,快速的透過它的現象看到他的本質,關於源碼解析我們只看核心邏輯,要避免深入代碼細節無法自拔或長篇大論不知道所云的錯誤,本專欄的同步視頻教程已經發布到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階段

	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章