Данные формы POST с использованием Retrofit 2.0, включая изображение - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь сделать POST-данные формы для сервера, используя Retrofit 2.0

RequestBody fdrcdRcd = RequestBody.create(MediaType.parse("text/plain"), drcdRcd);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", file.getName(), 
RequestBody.create(MediaType.parse("image/*"), file));
B2BService apiService = B2BClient.getClient().create(B2BService.class);
Call<RequestBaseModel> call = apiService.SpotImgUploadFile(fdrcdRcd , filePart);

И Сервис, как это:

@POST("/drcdSpotImgUploadFile")
@Multipart
Call<RequestBaseModel> SpotImgUploadFile(@Part("old_DrcdRcd") RequestBody fname, @Part MultipartBody.Part file);

Вся другая информация хранится, кроме моего изображения не храню. пока я тестирую с почтальоном, все работает. enter image description here И сгенерированный код для Java - OkHttp:

OkHttpClient client = new OkHttpClient().newBuilder()  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("old_DrcdRcd", "12312312")
.addFormDataPart("file","/C:/Users/Administrator/Pictures/IMG_7983.JPG",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("/C:/Users/Administrator/Pictures/IMG_7983.JPG")))
.build();
Request request = new Request.Builder()
.url("xxxxxxxxxxxxxxxxxxxx/drcdSpotImgUploadFile")
.method("POST", body)
.addHeader("Authorization", "xx-_G563tKhmiY")
.addHeader("Cookie", 
"connect.sid=s%3AyXnQNtJGuiMKBrBIPJ4LbcMs_pWhVEzM.NYTWbVrWbchl0lgG9wqt%2BysE%2Fbxr%2FKDrP1lPzSsy4vk")
.build();
Response response = client.newCall(request).execute();

Сервер возвращает сообщение об ошибке PayloadTooLargeError: request entity too large.

Итак, как загрузить изображение с помощью Дооснащение 2 ?

...