以表单形式上传图片

参考: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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值