OkHttps 上傳進(jìn)度監(jiān)聽(tīng)

2020-04-29 09:36 更新

  OkHttps 的上傳進(jìn)度監(jiān)聽(tīng),監(jiān)聽(tīng)的是所有請(qǐng)求報(bào)文體的發(fā)送進(jìn)度,示例代碼:

http.sync("/upload")
        .addBodyParam("name", "Jack")
        .addBodyParam("age", 20)
        .addFileParam("avatar", "D:/image/avatar.jpg")
        .setStepBytes(1024)   // 設(shè)置每發(fā)送 1024 個(gè)字節(jié)執(zhí)行一次進(jìn)度回調(diào)(不設(shè)置默認(rèn)為 8192)  
 //     .setStepRate(0.01)    // 設(shè)置每發(fā)送 1% 執(zhí)行一次進(jìn)度回調(diào)(不設(shè)置以 StepBytes 為準(zhǔn))  
        .setOnProcess((Process process) -> {           // 上傳進(jìn)度回調(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()

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

9.2 上傳過(guò)程控制

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

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


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

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

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


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

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)