【发布时间】:2022-01-08 13:27:23
【问题描述】:
在我的应用程序中,我从 API 响应中接收到一个文件,其 Content-Type 是 application/octet-stream。
我正在尝试将此文件作为ResponseEntity<Resource> 返回到前端。
但我遇到了错误:
RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.http.ResponseEntity] and content type [application/octet-stream]
通过浏览一些文档,我想到了使用 responseEntityExtractor,这与 RestTemplate.getForEntity 中的相同。
我的代码:
RequestCallback requestCallback = request -> {
HttpHeaders headers1 = request
.getHeaders();
headers1.set("Authorization", "Bearer " + template.getAccessToken());
headers1
.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL));
};
ResponseExtractor<ResponseEntity<Resource>> responseExtractor = template.responseEntityExtractor(ResponseEntity.class);
template.execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables);
可以理解的是,通过在请求回调中设置 setAccept,我们让 restTemplate 知道预期的内容类型,responseEntityExtractor() 将返回 ResponseExtractor<ResponseEntity<T>>。
我错过了什么?
【问题讨论】:
标签: java spring rest resttemplate