如果还未看过之前HttpSener系列的文章,请移步
HttpSender 开篇之功能使用篇,超好用、功能超级强大的Http请求框架(一)
HttpSender 介绍篇之生命周期、公共参数相关配置(二)
文件下载进度监听
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不了解的,请看我之前的文章,有疑问,请留言,我会第一时间进行解答。