实战:5分钟搞懂OkHttp断点上传,android插件化原理

本文介绍了如何使用OkHttp实现断点上传文件,包括FileRequestBody类的关键代码实现,以及如何在Android中进行断点上传的步骤。详细展示了通过服务端接口获取断点位置,然后使用OkHttp和RxHttp发起断点上传请求的过程。此外,还分享了个人的开发经验,强调面试技巧和持续学习的重要性。
摘要由CSDN通过智能技术生成

@Override

public long contentLength() throws IOException {

return file.length() - skipSize;

}

@Override

public void writeTo(@NotNull BufferedSink sink) throws IOException {

InputStream input = null;

Source source = null;

try {

input = new FileInputStream(file);

if (skipSize > 0) {

input.skip(skipSize); //跳到断点位置

}

source = Okio.source(input);

sink.writeAll(source);

} finally {

OkHttpCompat.closeQuietly(source, input);

}

}

}

为方便阅读,以上省略部分源码,FileRequestBody类完整源码

有了FileRequestBody类,我们只需要传入一个断点位置,剩下的工作就跟普通的文件上传一样。 接下来,直接进入代码实现。

3、代码实现

======

3.1 获取断点位置


首先,需要服务端提供一个接口,通过userId去查找该用户未上传完成的任务列表,代码如下:

RxHttp.get(“/…/getToUploadTask”)

.add(“userId”, “88888888”)

.asList()

.subscribe({

//成功回调,这里通过 it 拿到 List

}, {

//异常回调

});

其中ToUploadTask类如下:

//待上传任务

data class ToUploadTask(

val md5: String, //文件的md5,用于验证文件的唯一性

val file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值