使用Retrofit2+rxjava上传图片 并且上传包含图片信息的json字符串。

接口文档需要传两个参数 file file(代表上传的文件) String  parameter(代表图片的信息json的字符串)。

在retrofit2中上传文件使用的是 @Part MultipartBody.Part file 然后图片信息的字符串是 @Part(“parameter”) RequestBody parameter(括号中的key值和文档的key值要一样)。

//头像上传
    @Multipart
    @POST("url")
    Observable> upload(@Part("parameter") RequestBody parameter, @Part MultipartBody.Part file);

构建MultipartBody(注意:下面createFormData()方法中的第一个参数需要和接口文档的文件的key值一样)。

File file = new File(path);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part part = MultipartBody.Part.createFormData("file", "tx", requestFile);

构建图片信息RequestBody

RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), “我是图片”);

然后正常调用retrofit的方法上传就行了,此处我就不贴代码了。

注意两点:1.上传文件是用的@Part MultipartBody.Part。
2.key值要和文档的key值一样,不然后台解析不到。(之前就掉这个坑里,被坑了半天。)

你可能感兴趣的:(安卓开发,rxjava,json,android)