Отправьте вложение в формате PDF с помощью Spring RestTemplate с обычным заголовком Auth и пользовательскими заголовками. - PullRequest
0 голосов
/ 11 октября 2019

Мне нужно отправить PDF-вложение, используя PUT, например, когда вы прикрепляете документ в POSTMAN POSTMAN EXAMPLE . Служба, которую я использую, будет принимать только PDF-файлы в теле запроса.

Вот мой код:

// create new file
FileSystemResource file = new FileSystemResource(new File("/Users/name/Documents/test.pdf"));
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", file);

// adding basic auth
HttpHeaders headers = createHeaders(username, password);
// required custom header
headers.set("X-Async-Scope", timelineEntryId);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(baseUrl, HttpMethod.PUT, requestEntity, String.class);

проблема в том, что ответ приходитс кодом состояния 415 Неподдерживаемый тип носителя , и я не уверен, почему. мое тело HttpEntity в неправильном формате?

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Я наткнулся на другое решение, которое мне очень помогло! другое решение вот мой окончательный код и решение для моего собственного вопроса.

HttpHeaders headers = createHeaders(username, password);
headers.setContentType(MediaType.APPLICATION_PDF);
headers.set("X-Async-Scope", timelineEntryId);

InputStream inputStream = new FileSystemResource(new File(file.getPath())).getInputStream();
byte[] binaryData = IOUtils.toByteArray(inputStream);
HttpEntity<byte[]> requestEntity = new HttpEntity<>(binaryData, headers);

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(baseUrl, HttpMethod.PUT, requestEntity, String.class);
0 голосов
/ 11 октября 2019

Может быть, вам нужно установить тип содержимого заголовка?

headers.set("Content-Type", "application/pdf")

Если это не поможет, вы также должны установить заголовок Content-Disposition:

headers.set("Content-Disposition", "attachment; filename="+fileName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...