我尝试在单个请求中上传3张图片和4个参数:
尝试1
@Multipart
@POST("example/upload")
Call<String> upload(@Part("param_1") String param1,
@Part("param_2") String param2,
@Part("param_3") String param3,
@Part("param_4") String param4,
@Part("param_5") String param5,
@Part("image_1") okhttp3.RequestBody image1Jpg,
@Part("image_2") okhttp3.RequestBody image2Jpg,
@Part("another_image") okhttp3.RequestBody anotherImageJpg);
尝试2
@Multipart
@POST("example/upload")
Call<String> upload(@PartMap() Map<String, okhttp3.RequestBody> data,
@Part okhttp3.MultipartBody.Part image1,
@Part okhttp3.MultipartBody.Part image2,
@Part okhttp3.MultipartBody.Part anotherImage);
尝试3
@Multipart
@POST("example/upload")
Call<String> upload(@PartMap() Map<String, okhttp3.RequestBody> data,
@Part("image_1") okhttp3.RequestBody image1Jpg,
@Part("image_2") okhttp3.RequestBody image2Jpg,
@Part("another_image") okhttp3.RequestBody anotherImageJpg);
以下我上传方法的方法
public static RequestBody createRequestBody(Bitmap bitmap) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);
return RequestBody.create(okhttp3.MediaType.parse(MULTIPART_FROM_DATA), out.toByteArray());
}
public static MultipartBody.Part createPart(String name, String fileName, Bitmap bitmap) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);
RequestBody data = RequestBody.create(okhttp3.MediaType.parse(MULTIPART_FROM_DATA), out.toByteArray());
MultipartBody.Part part = MultipartBody.Part.createFormData(name, fileName, data);
return part;
}
我收到了400 Bad Request错误,但是通过POSTMAN测试,服务器端没问题。
我错了什么? 任何想法都会很感激。