android - 是否可以使用改造将单个项目作为多部分传递?

标签 android retrofit multipart

 @Multipart
@POST("/api/add-deal/")
public void addDeal(@Body Deal deal, @Part("image")TypedFile image,Callback<Response> callback);

我只想将图像作为多部分发送,其余部分按原样发送。有什么可能的方法吗?即使我尝试在我的 Deal 模型中添加 TypedFile 但无法使用 @part 进行注释

最佳答案

是的,使用散列映射的 Partmap 注释是可能的。例如-

    @Multipart
    @POST("/api/add-deal/")
    Call<Response> addDeal(@PartMap 
    HashMap<String, RequestBody> hashMap);

在 hashMap 中,您可以不添加任何 url 参数作为键,并使用 RequestBody 类类型设置您的值。查看如何将 String 和 Image 转换为 RequestBody。

    public static RequestBody ImageToRequestBody(File file) { //for image file to request body
           return RequestBody.create(MediaType.parse("image/*"),file);
    }

    public static RequestBody StringToRequestBody(String string){ // for string to request body
           return RequestBody.create(MediaType.parse("text/plain"),string);
    }

将参数添加到 hashmap-

    hashMap.put("photo",ImageToRequestBody(imageFile)); //your imageFile to Request body.
    hashMap.put("user_id",StringToRequestBody("113"));
    //calling addDeal method
    apiInterface.addDeal(hashMap);

希望这对您有所帮助。

关于android - 是否可以使用改造将单个项目作为多部分传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998828/

相关文章:

android - <PreferenceScreen> 中的 "android:key"有什么用?

android - 我应该如何解析数组中的数组中的Json

java - 即使手机连接到互联网,改造也会出现 'No Internet' 错误

java - 带有多部分文件上传的 Spring REST API 不适用于可选参数

.net - REST 客户端 HTTP 多部分支持

android - 此处不允许元素忽略,在 Android lint.xml 中

android - 当编辑文本中没有值时,Android应用程序崩溃

android - Facebook Graph API 与喜欢的帖子不同

java - Android自定义RxJava多次调用

使用边界的 Python/Django mime 多部分电子邮件