为 Android 中的多部分 form-data 请求更新默认值 Content-Type
Update default Content-Type for multipart form-data request in Android
我们目前正在 Android 中使用 okhttp3 和 retrofit2 进行网络 api 类型 POST 调用 multipart/form-data,api 请求和回复如下图
如果您观察,请求 header Content-Type 有“multipart/form-data; boundary=xxxxxx-xxxx-xxx....
”
代码如下
@Multipart
@POST("/some-api-method")
Call<SomeResponseBody> someCreateMethod(@PartMap Map<String, RequestBody> options);
我在发送自定义请求 header Content-Type 作为“multipart/form-data; **charset=utf-8;** boundary=xxxxx-xxxxx-x.....
”时遇到问题
基本上我需要更新 Content-Type header 以适应“charset=utf-8;
”
为此,我尝试了以下代码
@Multipart
@POST("/some-api-method")
@Headers({
"Content-Type: multipart/form-data; charset=utf-8"
})
Call<SomeResponseBody> someCreateMethod(@PartMap Map<String, RequestBody> options);
这导致将“charset=utf-8;
”添加到 Content-Type,但这导致删除或不添加现有属性“boundary=xxx-xxxx.....;
”
基本上我需要像下面这样的东西
Content-Type : "multipart/form-data; charset=utf-8; boundary=xxxx-xxx.....;"
任何帮助实现这一点的人都将不胜感激。
感谢
&
这些为我指明了正确的方向,我已通过以下方式解决了我的问题
@POST("/some-api-method")
Call< SomeResponseBody > someCreateMethod(@Header("Content-Type") String contentType, @Body RequestBody body);
我创建了如下的 MultipartBody 对象
RequestBody dataBody = RequestBody.create(okhttp3.MultipartBody.FORM, mGson.toJson(mData));
MultipartBody multipartBody = new MultipartBody.Builder()
.addPart(MultipartBody.Part.createFormData("key1", null, requestBodyObj1))
.addPart(MultipartBody.Part.createFormData("key2", null, requestBodyObj2))
.addPart(MultipartBody.Part.createFormData("key3", null, dataBody))
.build();
String contentType = "multipart/form-data; charset=utf-8; boundary=" + multipartBody.boundary();
someCreateMethod(contentType, multipartBody);
我们目前正在 Android 中使用 okhttp3 和 retrofit2 进行网络 api 类型 POST 调用 multipart/form-data,api 请求和回复如下图
如果您观察,请求 header Content-Type 有“multipart/form-data; boundary=xxxxxx-xxxx-xxx....
”
代码如下
@Multipart
@POST("/some-api-method")
Call<SomeResponseBody> someCreateMethod(@PartMap Map<String, RequestBody> options);
我在发送自定义请求 header Content-Type 作为“multipart/form-data; **charset=utf-8;** boundary=xxxxx-xxxxx-x.....
”时遇到问题
基本上我需要更新 Content-Type header 以适应“charset=utf-8;
”
为此,我尝试了以下代码
@Multipart
@POST("/some-api-method")
@Headers({
"Content-Type: multipart/form-data; charset=utf-8"
})
Call<SomeResponseBody> someCreateMethod(@PartMap Map<String, RequestBody> options);
这导致将“charset=utf-8;
”添加到 Content-Type,但这导致删除或不添加现有属性“boundary=xxx-xxxx.....;
”
基本上我需要像下面这样的东西
Content-Type : "multipart/form-data; charset=utf-8; boundary=xxxx-xxx.....;"
任何帮助实现这一点的人都将不胜感激。
感谢
@POST("/some-api-method")
Call< SomeResponseBody > someCreateMethod(@Header("Content-Type") String contentType, @Body RequestBody body);
我创建了如下的 MultipartBody 对象
RequestBody dataBody = RequestBody.create(okhttp3.MultipartBody.FORM, mGson.toJson(mData));
MultipartBody multipartBody = new MultipartBody.Builder()
.addPart(MultipartBody.Part.createFormData("key1", null, requestBodyObj1))
.addPart(MultipartBody.Part.createFormData("key2", null, requestBodyObj2))
.addPart(MultipartBody.Part.createFormData("key3", null, dataBody))
.build();
String contentType = "multipart/form-data; charset=utf-8; boundary=" + multipartBody.boundary();
someCreateMethod(contentType, multipartBody);