OkHttps 下載進(jìn)度監(jiān)聽(tīng)

2020-04-29 09:35 更新

  就直接上代碼啦,諸君一看便懂:

http.sync("/download/test.zip")
        .get()
        .getBody()
        .setStepBytes(1024)   // 設(shè)置每接收 1024 個(gè)字節(jié)執(zhí)行一次進(jìn)度回調(diào)(不設(shè)置默認(rèn)為 8192)  
 //     .setStepRate(0.01)    // 設(shè)置每接收 1% 執(zhí)行一次進(jìn)度回調(diào)(不設(shè)置以 StepBytes 為準(zhǔn))  
        .setOnProcess((Process process) -> {           // 下載進(jìn)度回調(diào)
            long doneBytes = process.getDoneBytes();   // 已下載字節(jié)數(shù)
            long totalBytes = process.getTotalBytes(); // 總共的字節(jié)數(shù)
            double rate = process.getRate();           // 已下載的比例
            boolean isDone = process.isDone();         // 是否下載完成
        })
        .toFolder("D:/download/")        // 指定下載的目錄,文件名將根據(jù)下載信息自動(dòng)生成
 //     .toFile("D:/download/test.zip")  // 指定下載的路徑,若文件已存在則覆蓋
        .setOnSuccess((File file) -> {   // 下載成功回調(diào)

            
        })
        .start();

  值得一提的是:由于 OkHttps 并沒(méi)有把下載做的很特別,這里設(shè)置的進(jìn)度回調(diào)不只對(duì)下載文件起用作,即使對(duì)響應(yīng)JSON的常規(guī)請(qǐng)求,只要設(shè)置了進(jìn)度回調(diào),它也會(huì)告訴你報(bào)文接收的進(jìn)度(提前是服務(wù)器響應(yīng)的報(bào)文有Content-Length頭),例如:

List<User> users = http.sync("/users")
        .get()
        .getBody()
        .setStepBytes(2)
        .setOnProcess((Process process) -> {
            System.out.println(process.getRate());
        })
        .toList(User.class);

如果覺(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)