Android使用 Retrofit 2.X 上传多文件和多表单示例
作者:陪你唠嗑 发布时间:2023-08-06 03:48:25
标签:retrofit,android,上传
retrofit post请求上传表单和文件最重要的就是就是去构建RequestBody,今天为大家带来一种超级简单的上传方式
Body方式:
1、Retrofit接口RetrofitInterface
@POST(URLConstant.URL_PATH)
Flowable<UploadImgBean> upload(@Body RequestBody Body);
2、Retrofit的配置
private static RetrofitInterface getRetrofitInterface(String baseUrl) {
if (retrofitInterface == null) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
// .addConverterFactory(ScalarsConverterFactory.create()) //string
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
retrofitInterface = retrofit.create(RetrofitInterface.class);
}
return retrofitInterface;
}
3、构建body
public static Flowable<UploadImgBean> upload(List<File> fileList) {
//构建body
//addFormDataPart()第一个参数为表单名字,这是和后台约定好的
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("username", "name")
.addFormDataPart("phone", "phone")
//注意,file是后台约定的参数,如果是多图,file[],如果是单张图片,file就行
for (File file : fileList) {
//这里上传的是多图
builder.addFormDataPart("file[]", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
}
RequestBody requestBody = builder.build();
return getRetrofitInterface(URLConstant.URL_BASE).upload(requestBody);
}
4、开始执行上传
HttpUtils.upload(mUploadFileList)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableSubscriber<UploadImgBean>() {
@Override
public void onNext(UploadImgBean uploadImgBean) {
Log.i(TAG, "onNext: " );
}
}
@Override
public void onError(Throwable throwable) {
Log.i(TAG, "onError: --->" + throwable.getMessage());
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
}
});
来源:http://www.jianshu.com/p/e4a7478689ce?utm_source=tuicool&utm_medium=referral
0
投稿
猜你喜欢
- mybatis-spring:@MapperScan注解在demo: springboot+mybatis的示例中,dao层接口使用了注解@
- Activator.CreateInstance和AssemblyCreateInstance性能测试using System;using
- 在工作中经常读写文本文件,在读文件时,需要按开头的两个字节判断文件格式,然后按该格式读文件中的内容。 写文件时,也要按目标文件指定
- 本文实例为大家分享了C#实现计算器窗体程序的具体代码,供大家参考,具体内容如下功能设计1、计算器中,添加 0-9 共十个数字键。2、计算器中
- 从主线程发送消息到子线程(准确地说应该是非UI线程)package com.zhuozhuo;import android.app.Acti
- java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,这次好好总结一下。理论先拙劣的表达一下jvm虚拟内存分布:程序计数器是j
- 1 环境部署1.1 jdk-8u111-windows-x64环境变量 JAVA_HOME:C:\Program Files\Java\jd
- Semaphore、SemaphoreSlim 类两者都可以限制同时访问某一资源或资源池的线程数。这里先不扯理论,我们从案例入手,通过示例代
- 三种定义数组的格式如下:int[] arr1=new int[10];int[] arr2={1,2,3,6};int[] arr3=new
- 背景最近再做一个需求,就是对站点的一些事件进行埋点,说白了就是记录用户的访问行为。那么这些数据怎么保存呢,人家点一下保存一下?显然不合适,肯
- 定义jdk8发布新特性中,lambda是一大亮点之一。lambda表达式能够简化我们对数据的操作,减少代码量,大大提升我们的开发效率。Lam
- 先看看代码再说:package com.b510.note; import java.math.BigInteger;
- 生成指定范围内的随机数这个是最常用的技术之一,程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数
- 单例模式应该是设计模式中比较简单的一个,也是非常常见的,但是在多线程并发的环境下使用却是不那么简单了,今天给大家分享一个我在开发过程中遇到的
- 为大家分享的解决MyEclipse中的Building workspace问题的方法如下方法一:点击“Project”,取消勾选“Build
- Java 编程语言中时间的处理类有 Date类与 Calendar类。目前官方不推荐使用 Date类,因为其不利于国际化;而是推荐使用 Ca
- 为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服。那如何做呢,当然是我们自己定义一个ProgressDialog了。
- 本文实例为大家分享了C#简单爬虫案例,供大家参考,具体内容如下using System;using System.Collections.G
- 大多数情况下你不需要访问者模式,但当一旦需要访问者模式时,那就是真的需要它了,这是设计模式创始人的原话。可以看出应用场景比较少,但需要它的时
- 一、递归概念递归本质:程序调用自身的编程技巧叫做递归。程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言