W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
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)的時段,當然是下載。
上傳文件的過程控制就很簡單,和常規(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 吧,項目地址:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: