У меня проблемы с созданием кода на стороне клиента для загрузки файла на сервер.Сервер и его конечная точка работают нормально, и я могу успешно загружать файлы с помощью почтальона.В почтальоне я создал запрос следующим образом:
- Выберите запрос "POST"
- Установите URL: http://localhost:7070/some-project/v1/frames/files/import
- Нажмите на тело и выберите данные формы
- Добавьте «file» в качестве ключа и выберите файл в качестве значения
- Нажмите 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);
Поскольку второй параметр не обязателен, мы можем проигнорировать его для этого вопроса.