如何使用RestTemplate从服务器接收应用程序/ pdf响应

问题描述 投票:7回答:1

我正在尝试捕获由我的Java客户端代码发出的HTTP请求的响应。响应的内容类型为application/pdf。在日志中,我可以看到服务器在[

中发送了响应
Object result = getRestTemplate().postForObject(urlString, formDataHttpEntity, returnClassObject, parametersMapStringString);

并且我收到以下JUnit错误:

org.springframework.web.client.RestClientException:无法提取响应:未为响应类型找到合适的HttpMessageConverter [java.lang.Object]和内容类型[application / pdf]

为了克服这个问题,我需要做什么?我的最终目标是将其放入byte[]并将其推送到Blob类型的DB表字段中

注意:我从服务器获得以下响应头

HTTP / 1.1 200 OK缓存控制:max-age = 0,必须重新验证 内容处置:附件; filename =“执行摘要。PDF” 内容类型:应用程序/ pdf

java spring pdf resttemplate
1个回答
13
投票

感谢托马斯,它奏效了。

我将ByteArrayHttpMessageConverter添加到RestTemplate,并且可以正常工作。

我添加的代码:

ByteArrayHttpMessageConverter byteArrayHttpMessageConverter = new ByteArrayHttpMessageConverter();

List<MediaType> supportedApplicationTypes = new ArrayList<>();
MediaType pdfApplication = new MediaType("application","pdf");
supportedApplicationTypes.add(pdfApplication);

byteArrayHttpMessageConverter.setSupportedMediaTypes(supportedApplicationTypes);
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
messageConverters.add(byteArrayHttpMessageConverter);
restTemplate = new RestTemplate();
restTemplate.setMessageConverters(messageConverters);

Object result = getRestTemplate().getForObject(url, returnClass, parameters);
byte[] resultByteArr = (byte[])result;
© www.soinside.com 2019 - 2024. All rights reserved.