参考:https://www.jianshu.com/p/783575d7ae2a
1.添加gradle引用
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0' //用于解析json数据
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' //这里用于retrofit与rxjava结合使用
2.请求接口
public interface HttpApi{
@Multipart //这里用Multipart
@POST("url/myurl") //请求方法为POST,里面为你要上传的url
Call<Result> myUpload(@Part List<MultipartBody.Part> partLis)
//注释用@Part,参数类型为List<MultipartBody.Part> 方便上传其它需要的参数或多张图片
//Result为我自定义的一个类
}
3.初始化retrofit
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
HttpApi service = retrofit.create(HttpApi.class);
4.上传图片
//1.创建MultipartBody.Builder对象
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)//表单类型
//2.获取图片,创建请求体
File file=new File(path);
RequestBody body=RequestBody.create(MediaType.parse("multipart/form-data"),file);//表单类型
//3.调用MultipartBody.Builder的addFormDataPart()方法添加表单数据
builder.addFormDataPart(key, value);//传入服务器需要的key,和相应value值
builder.addFormDataPart(key,file.getName(),body); //添加图片数据,body创建的请求体
//4.创建List<MultipartBody.Part> 集合,
// 调用MultipartBody.Builder的build()方法会返回一个新创建的MultipartBody
// 再调用MultipartBody的parts()方法返回MultipartBody.Part集合
List<MultipartBody.Part> parts=builder.build().parts();
//5.最后进行HTTP请求,传入parts即可
Call<Result> uploadPic=service.myUpload(parts);