我需要使用 PUT 发送 PDF 附件,就像在 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 正文格式错误吗?
最佳答案
我遇到了另一个对我帮助很大的解决方案! different solution这是我自己的问题的最终代码和解决方案。
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);
关于java - 使用带有基本身份验证和自定义 header 的 Spring RestTemplate 发送 PDF 附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58342615/