使用Retrofit 2.4.0,我正在发出@Multipart @POST请求.我正在将文件作为@Part以及一些元数据作为@PartMap发送.这就是通话的样子.
@Multipart
@POST("https://8hoot.com/my-path")
Single> uploadMedia(
@PartMap Map metadata,
@Part MultipartBody.Part filePart
);
还有另一个Map< String,String> ;,我们称之为subMetaMap,其中包含相关的键值对.
如何将该subMetaMap存储在@PartMap元数据中?如下所示.
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等不是一种选择.