easy-okhttp 異步請(qǐng)求

2018-08-08 14:37 更新
異步請(qǐng)求不會(huì)阻塞當(dāng)前線程(特別是網(wǎng)絡(luò)慢的時(shí)候),適用于對(duì)返回結(jié)果不關(guān)心或不需要立即知曉的情況下,比如推送、通知等。

異步請(qǐng)求只有在執(zhí)行網(wǎng)絡(luò)請(qǐng)求的時(shí)候有一點(diǎn)區(qū)別,其他地方和同步請(qǐng)求配置和操作都是一樣的。

String githubContent = HttpClient
            .get("https://www.github.com")
            .execute(new CallbackAdaptor<String>(){

                @Override
                public DataHandler<T> getDataHandler() {
                    return StringDataHandler.create();
                }

                @Override
                public void onSuccess(T data) {
                    //data就是經(jīng)過(guò)處理后的數(shù)據(jù),直接在這里寫(xiě)自己的業(yè)務(wù)邏輯
                }
            });
CallbackAdaptor是Callback的默認(rèn)實(shí)現(xiàn),一般推薦使用CallbackAdaptor,這樣你只需要關(guān)注的方法。下面著重介紹Callback接口定義。


Callback回調(diào)接口


Callback是回調(diào)定義接口,里面總共定義了6個(gè)函數(shù),每個(gè)函數(shù)被調(diào)用的順序不一樣。

  • onBefore() 第一被調(diào)用,主要在請(qǐng)求網(wǎng)絡(luò)之前,這個(gè)函數(shù)有返回值,如果返回false則阻止此次請(qǐng)求了;
  • postProgress() 第二被調(diào)用,上傳進(jìn)度回調(diào)函數(shù)
  • onError() 第三被調(diào)用,當(dāng)只有請(qǐng)求失敗時(shí)才會(huì)觸發(fā);
  • onComplete() 第四被調(diào)用,當(dāng)請(qǐng)求接口完成后觸發(fā)該函數(shù);
  • onSuccess() 第五被調(diào)用,當(dāng)請(qǐng)求接口成功(HTTP狀態(tài)碼為200)則會(huì)觸發(fā)該函數(shù), 該函數(shù)會(huì)依賴另外一個(gè)函數(shù)getDataHandler(),返回一個(gè)指定的數(shù)據(jù)處理器,處理原始數(shù)據(jù)。對(duì)于數(shù)據(jù)處理器前面已經(jīng)了解過(guò)了。

異步回調(diào)接口Callback總共定義了6個(gè)函數(shù),但是一般不會(huì)關(guān)心所有函數(shù)處理情況,所以提供了CallbackAdaptor空實(shí)現(xiàn)類,想要關(guān)注哪個(gè)函數(shù)的執(zhí)行結(jié)果,重載那個(gè)函數(shù)即可。


Callback回調(diào)接口

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)