使用 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等不是一种选择。
慕村225694
慕桂英4014372
相关分类