После нескольких часов борьбы с этой проблемой я, наконец, решил спросить совета здесь. Я использую Retrofit 2 для работы в сети в своем приложении. Вот как выглядит мой метод в интерфейсе API для загрузки изображений:
@POST(UPLOAD_PHOTO)
@Multipart
Call<UploadPhotoResponse> uploadPhoto(@Header("X-Auth-Token") String token, @Path("post_id") int postId
, @Part("photo\"; filename=\"cover.jpg\"") MultipartBody.Part photo, @Part("photo_thumb\"; filename=\"cover_thumb.jpg\" ") MultipartBody.Part photoThumb);
Объявление так, как я это называю:
RequestBody photoBody = RequestBody.create(MediaType.parse("image/jpeg"),bytePhoto);
RequestBody thumbBody = RequestBody.create(MediaType.parse("image/jpeg"), byteThumb);
MultipartBody.Part photoPart = MultipartBody.Part.createFormData("photo", photoFile.getName(), photoBody);
MultipartBody.Part thumbPart = MultipartBody.Part.createFormData("photo_thumb", thumbFile.getName(), thumbBody);
Call<UploadPhotoResponse> call = apiService
.uploadPhoto(sessionToken, postId, photoPart, thumbPart);
call.enqueue(new Callback<UploadPhotoResponse>() {
@Override
public void onResponse(Response<UploadPhotoResponse> response, Retrofit retrofit) {
}
@Override
public void onFailure(Throwable t) {
}
});
Моя проблема в том, что я получаю сообщение об ошибке с сервера из-за неверных параметров тела. В некоторых случаях Content-Type для каждой части устанавливается в «application/json», как вы можете видеть на экране Fiddler: Параметры тела запроса
Единственное обсуждение, относящееся к моей проблеме, которое мне удалось найти, это Многочастный запрос, переопределяющий тип содержимого, не работает #1433
Но речь идет о типе контента для заголовка запроса, а не для части тела. Может быть кто-то сталкивался с подобной проблемой с OkHttp, потому что теперь я ничего не могу сказать, что может решить мою проблему, кроме переключения с этой библиотеки для этого конкретного запроса.