Я пытаюсь перейти с обычных методов HttpPost на Spring WebClient, и у меня есть API, который принимает два файла (один JSON и один PDF) для загрузки.
Я пытаюсь отправить файлы как ниже, но получая 500 Внутренняя ошибка сервера вместо 200 OK.
String jsonData ="";
ByteArrayOutputStream file;
MultipartBodyBuilder builder = new MultipartBodyBuilder();
String header1 = String.format("form-data; name=%s; filename=%s", "attach", "file.pdf");
String header2 = String.format("form-data; name=%s; filename=%s", "jsonfile", "jsonfile.json");
// This line is causing the problem, Am I making a mistake here?
builder.part("attach", file.toByteArray()).header("Content-Disposition", header1);
// This line works fine.
builder.part("jsonfile", jsonData.getBytes()).header("Content-Disposition", header2);
WebClient webClient = WebClient.create("a url");
byte[] fileContent = null;
try {
fileContent = webClient.post()
.body(BodyInserters.fromMultipartData(builder.build()))
.retrieve()
.onStatus(HttpStatus::isError, res -> handleError(res))
.bodyToMono(byte[].class)
.block();
} catch (Exception e) {
return null;
}
Однако, если я не отправляю файл PDF в запросе, он работает нормально только с файлом JSON. С Почтальоном оба дела работают нормально.
Я предполагаю, что я делаю ошибку при добавлении файла PDF в запрос. Хотя сам файл является допустимым PDF, а ответ API - это файл JSON.
Если кто-то может сказать мне, что здесь может быть не так.