我正在使用Retrofit 2.4.0进行@Multipart
@POST
请求。我将文件作为@Part
与一些元数据一起作为@PartMap
发送。这是调用的样子。
@Multipart
@POST("https://8hoot.com/my-path")
Single<Response<UploadMediaResponseModel>> uploadMedia(
@PartMap Map<String, RequestBody> metadata,
@Part MultipartBody.Part filePart
);
还有另一个Map<String, String>
,我们称之为subMetaMap
,它包含相关的键值对。
我该如何将这个subMetaMap
存储在@PartMap
metadata
中?就像下面展示的那样。
RequestBody subMetaMapAsRequestBody; // Convert subMetaMap to RequestBody
metadata.put("subMeta", subMetaMapAsRequestBody);
目前,我正在使用以下方法。
for (String s : subMetaMap.keySet()) {
RequestBody requestBody = RequestBody.create(MultipartBody.FORM, subMetaMap.get(s));
metadata.put(s, requestBody);
}
这不是我想要的解决方案,因为我想要整个subMetaMap
作为RequestBody
而不是它的单独键值对。
编辑1 - 后端团队在Multipart
请求时不接受不同的MIME类型。因此发送JSON
、MessagePack
等不是一个选择。
PartMap
都被合并成了一个。我会检查后端应用程序的行为并尽快回复。 - potatoPC