Я использовал Retrofit 1.9 для загрузки изображения, например
TypedFile typedFile = new TypedFile("multipart/form-data", new File(ImagePath));
, и все работает нормально, теперь я должен использовать Retrofit 2 из-за требования кода ответа, поэтому я изменил код соответственно для этого ответа как
RequestBody filebody = RequestBody.create(MediaType.parse("image/*"), file);
Я передаю filebody вместе с другими параметрами для отправки запроса, поэтому все остальные значения отправляются правильно, но файл изображения не публикуется должным образом.
В обоих случаях нет изменений в API или коде на стороне сервера, поэтому мне любопытно узнать, нужно ли мне изменять код на стороне сервера или я что-то упускаю при написании кода клиента Android.
посмотрите на полный код
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part filebody = MultipartBody.Part.createFormData("product_img", file.getName(), requestFile);
Call<AddProduct> call = service.sendEditProductRequest(name, filebody );
, а остальной интерфейс будет похож на
@Multipart
@POST(EDIT_PRODUCT)
Call<AddProduct> sendEditProfileRequest (
@Part("name") RequestBody name,
@Part MultipartBody.Part filebody);