OkHttps 上传进度监听
2020-04-29 09:36 更新
OkHttps 的上传进度监听,监听的是所有请求报文体的发送进度,示例代码:
http.sync("/upload")
.addBodyParam("name", "Jack")
.addBodyParam("age", 20)
.addFileParam("avatar", "D:/image/avatar.jpg")
.setStepBytes(1024) // 设置每发送 1024 个字节执行一次进度回调(不设置默认为 8192)
// .setStepRate(0.01) // 设置每发送 1% 执行一次进度回调(不设置以 StepBytes 为准)
.setOnProcess((Process process) -> { // 上传进度回调
long doneBytes = process.getDoneBytes(); // 已发送字节数
long totalBytes = process.getTotalBytes(); // 总共的字节数
double rate = process.getRate(); // 已发送的比例
boolean isDone = process.isDone(); // 是否发送完成
})
.post()
咦!怎么感觉和下载的进度回调的一样?没错!OkHttps 还是使用同一套API处理上传和下载的进度回调,区别只在于上传是在get/post
方法之前使用这些API,下载是在getBody
方法之后使用。很好理解:get/post
之前是准备发送请求时段,有上传的含义,而getBody
之后,已是报文响应的时段,当然是下载。
9.2 上传过程控制
上传文件的过程控制就很简单,和常规请求一样,只有异步发起的上传可以取消:
HttpCall call = http.async("/upload")
.addFileParam("test", "D:/download/test.zip")
.setOnProcess((Process process) -> {
System.out.println(process.getRate());
})
.post()
call.cancel(); // 取消上传
上传就没有暂停和继续这个功能啦,应该没人有这个需求吧?
如果觉得 OkHttps 好用,就去点个 Star 吧,项目地址:
官方网站:http://okhttps.ejlchina.com/
以上内容是否对您有帮助:
更多建议: