前言
OkHttp系列文章
OkHttp系列文章(一) - Java網(wǎng)絡編程基礎
OkHttp系列文章(二) - Http與Https
OkHttp系列文章(三) - OkHttp
OkHttp系列文章(四) - OkHttp攔截器原理
OkHttp系列文章(五) - OkHttp的5個攔截器作用
OkHttp系列文章(六) - OkHttp的5個攔截器圖解分析
OkHttp系列文章(七) - 文件更新下載
1. OkHttp攔截器原理如下圖所示

分析OkHttp攔截器原理:
第一次請求:
1>:首先是客戶端發(fā)起Request請求,然后經(jīng)過所有的攔截器,比如第一層是達到BridgeInterceptor基礎攔截器,這個攔截器它會添加一些自己的處理,然后到達下一個攔截器;
2>:比如下一個攔截器是CacheInterceptor緩存攔截器,如果當前沒有緩存就又會走到下一個攔截器;
3>:比如下一個攔截器是ConnectInterceptor建立連接攔截器,這個攔截器與服務器進行建立連接,然后返回數(shù)據(jù)一路給上一個攔截器,直到最后返回給客戶端為止;
第二次請求:
1>:當在第二次請求時候,首先客戶端發(fā)起Request請求時,首先到大BridgeInterceptor攔截器,它會添加一些自己的處理,然后達到第二層攔截器;
2>:當?shù)竭_第二層的CacheInterceptor攔截器,發(fā)現(xiàn)有緩存數(shù)據(jù),這個時候就直接走紅色路線部分,在緩存攔截器中就給 客戶端把Response返回了,就不會走下一個ConnectInterceptor攔截器了;
3>:如果自己有自定義的攔截器,可以添加到BridgeInterceptor攔截器上邊,也就是添加到第一個攔截器的位置,這個自定義的攔截器添加的位置完全由自己來定;
自己可以在任何一個地方添加攔截器進行攔截;
以上就是 OkHttp攔截器執(zhí)行原理
2. getResponseWithInterceptorChain() 作用:
把請求Request 變?yōu)? Response;