OkHttps 上傳進度監(jiān)聽

2020-04-29 09:36 更新

  OkHttps 的上傳進度監(jiān)聽,監(jiān)聽的是所有請求報文體的發(fā)送進度,示例代碼:

http.sync("/upload")
        .addBodyParam("name", "Jack")
        .addBodyParam("age", 20)
        .addFileParam("avatar", "D:/image/avatar.jpg")
        .setStepBytes(1024)   // 設(shè)置每發(fā)送 1024 個字節(jié)執(zhí)行一次進度回調(diào)(不設(shè)置默認為 8192)  
 //     .setStepRate(0.01)    // 設(shè)置每發(fā)送 1% 執(zhí)行一次進度回調(diào)(不設(shè)置以 StepBytes 為準)  
        .setOnProcess((Process process) -> {           // 上傳進度回調(diào)
            long doneBytes = process.getDoneBytes();   // 已發(fā)送字節(jié)數(shù)
            long totalBytes = process.getTotalBytes(); // 總共的字節(jié)數(shù)
            double rate = process.getRate();           // 已發(fā)送的比例
            boolean isDone = process.isDone();         // 是否發(fā)送完成
        })
        .post()

  咦!怎么感覺和下載的進度回調(diào)的一樣?沒錯!OkHttps 還是使用同一套API處理上傳和下載的進度回調(diào),區(qū)別只在于上傳是在get/post方法之前使用這些API,下載是在getBody方法之后使用。很好理解:get/post之前是準備發(fā)送請求時段,有上傳的含義,而getBody之后,已是報文響應(yīng)的時段,當然是下載。

9.2 上傳過程控制

  上傳文件的過程控制就很簡單,和常規(guī)請求一樣,只有異步發(fā)起的上傳可以取消:

HttpCall call = http.async("/upload")
        .addFileParam("test", "D:/download/test.zip")
        .setOnProcess((Process process) -> {
            System.out.println(process.getRate());
        })
        .post()


call.cancel();  // 取消上傳

  上傳就沒有暫停和繼續(xù)這個功能啦,應(yīng)該沒人有這個需求吧?

如果覺得 OkHttps 好用,就去點個 Star 吧,項目地址:


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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號