• 五月
  • 23
  • load

【Retrofit第五篇】协程上传,善变的方法 2021-05-23 21:59:48

上传和下载不同,上传的方法很多,我会逐一介绍,因为操作多,你每次百度都能找到新的上传操作。

不过有一点和下载相同,Retrofit不支持监听进度条,想监听要调用okhttp

这次,我们要创建一个继承RequestBody的类

至少有个好消息,不管你用什么方法上传,都不会改变重写的RequestBody

 

单文件上传

首先,创建一个带@Multipart注解的post请求

然后上传就这样

RequestBody自带的RequestBody,是不能让你监听过程,因此要把okhttp调出来改写一下。

至于getDiskCachePath()是什么?那是获取应用缓存目录的方法,你随意百度一个代码都可以。

 

单文件上传中,刚刚我提到的是适合动态参数时,如果要把参数写死,那么要改成这样

上传的实现

如此操作,我们就把part省略了,不过这种场景只适用于无需自定义文件名,上传参数名是写死的情况。

 

多文件上传

和单文件一样,有两种操作

上传的实现

 

如果你不喜欢传list上传,可以用map

上传的实现

 

通用的上传方式,body上传

和前面那几种方式,body上传显得有点非主流,但body是可以支持转换器的,也就是说可以传个我自己喜欢的对象,转换成应该传递的对象

上传的实现

和其它相比,body上传的代码量就显得有点多了,不过它支持转换器,扩展性会更好。

至于要使用哪个,看个人需求吧,没有说哪个好哪个坏的。

 

原创文章,转载请注明出处

正在加载评论...

0 / 240

警告

确定