Android用Retrofit以form表单上传图片

Retrofit是一个用于安卓和java的http框架,具体用法可以查看它的官网和github。网上也有很多使用教程,这里主要简单说下用它以form表单上传图片的方法。
官网http://square.github.io/retrofit/
github https://github.com/square/retrofit

1.添加gradle引用

   
   
  1. compile 'com.squareup.retrofit2:retrofit:2.1.0'
  2. compile 'com.squareup.retrofit2:converter-gson:2.1.0' //用于解析json数据
  3. compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' //这里用于retrofit与rxjava结合使用
2.请求接口

   
   
  1. public interface HttpApi{
  2. @Multipart //这里用Multipart
  3. @POST("url/myurl") //请求方法为POST,里面为你要上传的url
  4. Call<Result> myUpload( @Part List<MultipartBody.Part> partLis)
  5. //注释用@Part,参数类型为List<MultipartBody.Part> 方便上传其它需要的参数或多张图片
  6. //Result为我自定义的一个类
  7. }
3.初始化Retrofit

   
   
  1. Retrofit retrofit = new Retrofit.Builder()
  2. .baseUrl( "https://api.github.com/")
  3. .build();
  4. HttpApi service = retrofit.create(HttpApi. class);
4.开始上传图片

   
   
  1. //1.创建MultipartBody.Builder对象
  2. MultipartBody.Builder builder = new MultipartBody.Builder()
  3. .setType(MultipartBody.FORM) //表单类型
  4. //2.获取图片,创建请求体
  5. File file= new File(path);
  6. RequestBody body=RequestBody.create(MediaType.parse( "multipart/form-data"),file); //表单类型
  7. //3.调用MultipartBody.Builder的addFormDataPart()方法添加表单数据
  8. builder.addFormDataPart(key, value); //传入服务器需要的key,和相应value值
  9. builder.addFormDataPart(key,file.getName(),body); //添加图片数据,body创建的请求体
  10. //4.创建List<MultipartBody.Part> 集合,
  11. // 调用MultipartBody.Builder的build()方法会返回一个新创建的MultipartBody
  12. // 再调用MultipartBody的parts()方法返回MultipartBody.Part集合
  13. List<MultipartBody.Part> parts=builder.build().parts();
  14. //5.最后进行HTTP请求,传入parts即可
  15. Call<Result> uploadPic=service.myUpload(parts);
转自:https://blog.csdn.net/weixin_34152820/article/details/87628229

猜你喜欢

转载自blog.csdn.net/u013651026/article/details/88709777
今日推荐