美文网首页Android
Android用Retrofit以form表单上传图片

Android用Retrofit以form表单上传图片

作者: NullUser | 来源:发表于2018-03-14 21:19 被阅读0次

    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);
    

    相关文章

      网友评论

        本文标题:Android用Retrofit以form表单上传图片

        本文链接:https://www.haomeiwen.com/subject/meisfftx.html