前言
OkHttp系列文章
OkHttp系列文章(一) - Java網(wǎng)絡(luò)編程基礎(chǔ)
OkHttp系列文章(二) - Http與Https
OkHttp系列文章(三) - OkHttp
OkHttp系列文章(四) - OkHttp攔截器原理
OkHttp系列文章(五) - OkHttp的5個(gè)攔截器作用
OkHttp系列文章(六) - OkHttp的5個(gè)攔截器圖解分析
OkHttp系列文章(七) - 文件更新下載
1. OkHttp攔截器原理如下圖所示
分析OkHttp攔截器原理:
第一次請求:
1>:首先是客戶端發(fā)起Request請求为鳄,然后經(jīng)過所有的攔截器孤钦,比如第一層是達(dá)到BridgeInterceptor基礎(chǔ)攔截器静袖,這個(gè)攔截器它會(huì)添加一些自己的處理队橙,然后到達(dá)下一個(gè)攔截器捐康;
2>:比如下一個(gè)攔截器是CacheInterceptor緩存攔截器,如果當(dāng)前沒有緩存就又會(huì)走到下一個(gè)攔截器粗合;
3>:比如下一個(gè)攔截器是ConnectInterceptor建立連接攔截器乌昔,這個(gè)攔截器與服務(wù)器進(jìn)行建立連接供屉,然后返回?cái)?shù)據(jù)一路給上一個(gè)攔截器,直到最后返回給客戶端為止;
第二次請求:
1>:當(dāng)在第二次請求時(shí)候,首先客戶端發(fā)起Request請求時(shí),首先到大BridgeInterceptor攔截器抱冷,它會(huì)添加一些自己的處理崔列,然后達(dá)到第二層攔截器;
2>:當(dāng)?shù)竭_(dá)第二層的CacheInterceptor攔截器旺遮,發(fā)現(xiàn)有緩存數(shù)據(jù)赵讯,這個(gè)時(shí)候就直接走紅色路線部分,在緩存攔截器中就給 客戶端把Response返回了趣效,就不會(huì)走下一個(gè)ConnectInterceptor攔截器了瘦癌;
3>:如果自己有自定義的攔截器猪贪,可以添加到BridgeInterceptor攔截器上邊跷敬,也就是添加到第一個(gè)攔截器的位置,這個(gè)自定義的攔截器添加的位置完全由自己來定热押;
自己可以在任何一個(gè)地方添加攔截器進(jìn)行攔截西傀;
以上就是 OkHttp攔截器執(zhí)行原理
2. getResponseWithInterceptorChain() 作用:
把請求Request 變?yōu)? Response;