如果還未看過之前HttpSener系列的文章,請移步
HttpSender 開篇之功能使用篇,超好用、功能超級強大的Http請求框架(一)
HttpSender 介紹篇之生命週期、公共引數相關配置(二)
HttpSender 擴充套件篇之Parser擴充套件(六)
檔案下載進度監聽
String url = "http://update.9158.com/miaolive/Miaolive.apk";
//檔案儲存路徑
String destPath = getExternalCacheDir() + "/" + System.currentTimeMillis() + ".apk";
Disposable disposable = HttpSender
.download(Param.get(url), destPath) //注意這裡使用download操作符
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(progress -> {
//下載進度回撥,0-100,僅在進度有更新時才會回撥,最多回撥101次,最後一次回撥檔案儲存路徑
int currentProgress = progress.getProgress(); //當前進度 0-100
long currentSize = progress.getCurrentSize(); //當前已下載的位元組大小
long totalSize = progress.getTotalSize(); //要下載的總位元組大小
String filePath = progress.getResult(); //檔案儲存路徑,最後一次回撥才有內容
})
.filter(Progress::isCompleted)//下載完成,才繼續往下走
.map(Progress::getResult) //到這,說明下載完成,返回下載目標路徑
.subscribe(s -> {//s為String型別,這裡為檔案儲存路徑
//下載完成,處理相關邏輯
}, throwable -> {
//下載失敗,處理相關邏輯
});
複製程式碼
檔案上傳進度監聽
String url = "http://www.......";
Param param = Param.postForm(url) //傳送Form表單形式的Post請求
.add("file1", new File("xxx/1.png"))
.add("file2", new File("xxx/2.png"))
.add("key1", "value1")//新增引數,非必須
.add("key2", "value2")//新增引數,非必須
.addHeader("versionCode", "100"); //新增請求頭,非必須
Disposable disposable = HttpSender
.upload(param, new SimpleParser<String>() {}) //注:如果需要監聽上傳進度,使用upload操作符
.observeOn(AndroidSchedulers.mainThread()) //主執行緒回撥
.doOnNext(progress -> {
//上傳進度回撥,0-100,僅在進度有更新時才會回撥,最多回撥101次,最後一次回撥Http執行結果
int currentProgress = progress.getProgress(); //當前進度 0-100
long currentSize = progress.getCurrentSize(); //當前已上傳的位元組大小
long totalSize = progress.getTotalSize(); //要上傳的總位元組大小
String result = progress.getResult(); //Http執行結果,最後一次回撥才有內容
})
.filter(Progress::isCompleted)//過濾事件,上傳完成,才繼續往下走
.map(Progress::getResult) //到這,說明上傳完成,拿到Http返回結果並繼續往下走
.subscribe(s -> { //s為String型別,由SimpleParser類裡面的泛型決定的
//上傳成功,處理相關邏輯
}, throwable -> {
//上傳失敗,處理相關邏輯
});
複製程式碼
怎麼樣,是不是簡單,如果對HttpSender不瞭解的,請看我之前的文章,有疑問,請留言,我會第一時間進行解答。