首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用RestTemplate从服务器接收应用程序/pdf响应

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

Stack Overflow用户
提问于 2014-08-26 16:13:38
回答 2查看 20.2K关注 0票数 9

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

代码语言:javascript
运行
复制
Object result = getRestTemplate().postForObject(urlString, formDataHttpEntity, returnClassObject, parametersMapStringString);

我得到以下JUnit错误:

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

我该怎么做才能摆脱这一切?我的最终目标是在byte[]中使用它,并将其推到blob类型的DB表字段中。

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

HTTP/1.1 200 OK Cache-Control: max-age=0,必须重新验证 内容-处置:附件;filename=“执行Summary.PDF” 内容-类别:申请/pdf

EN

回答 2

Stack Overflow用户

发布于 2014-08-26 20:28:22

谢谢托马斯成功了。

我将ByteArrayHttpMessageConverter添加到RestTemplate中,它起了作用。

我添加的代码:

代码语言:javascript
运行
复制
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;
票数 16
EN

Stack Overflow用户

发布于 2021-11-15 06:06:12

API我调用来获取PDF正在返回InputStreamResource。为了得到响应,我以这种方式使用它,我获得了一个成功的pdf字节数组。

代码语言:javascript
运行
复制
public byte[] callApiToGetPDF(Object  reqData) {
    
    if (StringUtils.isEmpty(baseUrl)) {
        setRuntimeConfigurationValues();
    }
    
    String urlForEndPoint= baseUrl + "/" +    "";   
    HttpEntity<Object> entity = new HttpEntity<>(reqData, buildHeaders());
    return restTemplate.postForEntity(urlForEndPoint, entity, byte[].class).getBody();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25510498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档