Spring веб-клиент, потребляющий приложение / pdf - PullRequest
0 голосов
/ 04 февраля 2020

Я пытался использовать одну конечную точку REST, чей вывод - файл PDF. Исходная конечная точка корректно возвращает PDF, но когда я использую Spring weblclient для использования, как показано ниже, и преобразования в файл, при открытии выдается ошибка «файл поврежден».

Также пробный ресурс массива байтов ( Как лучше всего получить байтовый массив из ClientResponse из Spring WebClient? ), но я сомневаюсь, что преобразование байтов может вызывать повреждение файла, поэтому используется InputStream но та же проблема, любые указатели, пожалуйста?

Пример кода

 InputStream mono = WebClient.create().get().uri(UriComponentsBuilder.fromUriString(serviceUri)).build().toUri())
        .accept(MediaType.APPLICATION_PDF)
        .exchange()
        .flatMap(response -> response.bodyToMono(InputStreamResource.class))
        .map(inputStreamResource -> {
          try {
            return inputStreamResource.getInputStream();
          } catch (IOException e) {
            e.printStackTrace();
          }
          return null;
        }).block();


try(OutputStream outputStream = new FileOutputStream("c:\\report.pdf")) {
  try {
    IOUtils.copy(mono, outputStream);
  } catch (IOException e) {
    e.printStackTrace();
  }
} catch (FileNotFoundException e | IOException e) {
  e.printStackTrace();
} 
...