java - 使用带有基本身份验证和自定义 header 的 Spring RestTemplate 发送 PDF 附件

标签 java spring spring-boot

我需要使用 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/

相关文章:

java - @SpringBootTest 需要数据库连接吗?

java - 在 Spring Thymeleaf 中获取值(value)的问题

spring - Neo4j/SDN 警告 : No identity field found for class of type for exception class

java - 我可以提取号码吗? 2位数字从字符串到整数?

java - 使用 Java 的 AWS 资源

java - Spring 通用 Dao 类名

java - 有没有办法将 String.format 传递给 thymeleaf 模板?

java - 与听众一起改变变量

java - 如何使 J-Unit Test 属性文件路径依赖于环境?

eclipse - 我可以与其他人同时在同一个项目上使用 Java 进行编程吗?