Android用Retrofit以form表单上传图片

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

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,766评论 25 709
  • 太长了,还是转载吧...今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源...
    庞哈哈哈12138阅读 20,354评论 3 283
  • 投射:1投射過一個最舒適悠閒的假期! 2投射愈來愈多客戶支持我的業績! 3投射財富不斷湧入我的戶口! 感賞:1感賞...
    謝奕鋒阅读 1,270评论 0 0
  • 2015年12月18日,我从上海辗转青岛和朋友见面,一起飞往泰国...一个之前在我脑海里是一个特别不一样的国家,说...
    往事随风谈不上阅读 1,670评论 0 0
  • 生活就像演出 一场接着一场 不同时间 不同地点 不同对象 你扮演不同的角色 有时喜剧 有时悲情 有时激昂 有时消沉...
    花田里的珊瑚阅读 1,351评论 0 1

友情链接更多精彩内容