Как создать запрос данных формы, как это делает Почтальон в retrofit2 - PullRequest
0 голосов
/ 01 июля 2019

У меня проблемы с созданием кода на стороне клиента для загрузки файла на сервер.Сервер и его конечная точка работают нормально, и я могу успешно загружать файлы с помощью почтальона.В почтальоне я создал запрос следующим образом:

  1. Выберите запрос "POST"
  2. Установите URL: http://localhost:7070/some-project/v1/frames/files/import
  3. Нажмите на тело и выберите данные формы
  4. Добавьте «file» в качестве ключа и выберите файл в качестве значения
  5. Нажмите send

Посмотрите на этот скриншот от почтальона

Теперь мой вопрос: как написать код на стороне клиента в retrofit2?Когда я получаю ошибку 500 на стороне сервера, если я выполняю свой код клиента:

RequestBody requestFile = RequestBody.create(MediaType.parse("application/form-data"), file);
     MultipartBody.Part body = MultipartBody.Part.createFormData("files", file.getName(), requestFile);
     return executeCall(frameClient.importFiles(body, destinationFrameNames));

executeCall ():

Response<T> response;
  try
  {
     response = call.execute();
     if (!response.isSuccessful())
     {
        ResponseBody errorBody = response.errorBody();
        if (errorBody == null)
        {
           throw new ClientException("execute client call error");
        }
        else
        {
           throw new ClientException(IOUtils.toString(errorBody.byteStream(), Charset.defaultCharset()));
        }
     }
  }

importFiles ():

@Multipart
@POST("some-project/v1/frames/files/import")
Call<List<Frame>> importFiles(@Part MultipartBody.Part files, 
@Query("destinationFrameNames") List<String> destinationFrameNames);

Поскольку второй параметр не обязателен, мы можем проигнорировать его для этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...