OkHttps 并行預(yù)處理器

2020-05-10 00:33 更新

  預(yù)處理器(Preprocessor)可以讓我們?cè)谡?qǐng)求發(fā)出之前對(duì)請(qǐng)求本身做一些改變,但與OkHttp的攔截器(Interceptor)不同:預(yù)處理器可以讓我們 異步 處理這些問(wèn)題。

  例如,當(dāng)我們想為請(qǐng)求任務(wù)自動(dòng)添加Token頭信息,而Token只能通過(guò)異步方法requestToken獲取時(shí),這時(shí)使用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也可以添加多個(gè)。他們之間的區(qū)別如下:

  • 攔截器只能處理同步操作,預(yù)處理器支持處理異步操作
    攔截器都是并行處理請(qǐng)求,預(yù)處理器支持串行處理(詳見(jiàn)6.5章節(jié))
    攔截器處理時(shí)機(jī)在請(qǐng)求前和響應(yīng)后,預(yù)處理器只在請(qǐng)求前,并且先于攔截器執(zhí)行。關(guān)于響應(yīng)后,OkHttps還提供了全局回調(diào)監(jiān)聽(tīng)(詳見(jiàn)6.6章節(jié))

如果覺(jué)得 OkHttps 好用,就去點(diǎn)個(gè) Star 吧,項(xiàng)目地址:


官方網(wǎng)站:http://okhttps.ejlchina.com/

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)