}, throwable -> {
//失败回调
});
可以看到,直接使用fromListParser
操作符,传入Student.class
即可,它内部就是通过ListParser.get(Student.class)
获取的ListParser对象。
接下来我们看看RxHttp提供的最后一个解析器DownloadParser
DownloadParser
DownloadParser的作用是将Http返回的输入流写到文件中,即文件下载
这个好理解,就不仔细讲解了,有一点要的说的,此解析器是支持断点下载,我们来看看如何实现断点下载,并且带进度回调
//断点下载,带进度
public void breakpointDownloadAndProgress() {
String destPath = getExternalCacheDir() + “/” + “Miaobo.apk”;
long length = new File(destPath).length();
RxHttp.get(“http://update.9158.com/miaolive/Miaolive.apk”)
.setRangeHeader(length) //设置开始下载位置,结束位置默认为文件末尾
.downloadProgress(destPath,length) //如果需要衔接上次的下载进度,则需要传入上次已下载的字节数
.observeOn(AndroidSchedulers.mainThread()) //主线程回调
.doOnNext(progress -> {
//下载进度回调,0-100,仅在进度有更新时才会回调
int currentProgress = progress.getProgress(); //当前进度 0-100
long currentSize = progress.getCurrentSize(); //当前已下载的字节大小
long totalSize = progress.getTotalSize(); //要下载的总字节大小
})
.filter(Progress::isCompleted)//过滤事件,下载完成,才继续往下走
.map(Progress::getResult) //到这,说明下载完成,拿到Http返回结果并继续往下走
.as(RxLife.asOnMa