OkHttps 并行預(yù)處理器

2020-05-10 00:33 更新

  預(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)目地址:


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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號