W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
預(yù)處理器(Preprocessor
)可以讓我們在請求發(fā)出之前對請求本身做一些改變,但與OkHttp
的攔截器(Interceptor
)不同:預(yù)處理器可以讓我們 異步 處理這些問題。
例如,當(dāng)我們想為請求任務(wù)自動添加Token
頭信息,而Token
只能通過異步方法requestToken
獲取時,這時使用Interceptor
就很難處理了,但可以使用預(yù)處理器輕松解決:
HTTP http = HTTP.builder()
.addPreprocessor((PreChain chain) -> {
HttpTask<?> task = chain.getTask();// 獲得當(dāng)前的HTTP任務(wù)
if (!task.isTagged("Auth")) { // 根據(jù)標(biāo)簽判斷該任務(wù)是否需要Token
chain.proceed();
return;
}
requestToken((String token) -> { // 異步獲取 Token
task.addHeader("Token", token);// 為任務(wù)添加頭信息
chain.proceed(); // 繼續(xù)當(dāng)前的任務(wù)
});
})
.build();
和Interceptor
一樣,Preprocessor
也可以添加多個。他們之間的區(qū)別如下:
- 攔截器只能處理同步操作,預(yù)處理器支持處理異步操作
攔截器都是并行處理請求,預(yù)處理器支持串行處理(詳見6.5章節(jié))
攔截器處理時機(jī)在請求前和響應(yīng)后,預(yù)處理器只在請求前,并且先于攔截器執(zhí)行。關(guān)于響應(yīng)后,OkHttps還提供了全局回調(diào)監(jiān)聽(詳見6.6章節(jié))
如果覺得 OkHttps 好用,就去點(diǎn)個 Star 吧,項(xiàng)目地址:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: