我正在尝试捕获我的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类型的数据库表字段中
注意:我从服务器获得以下响应标头
HTTP / 1.1 200 OK Cache-Control:max-age = 0,必须重新验证
内容 - 处理:附件; filename =“执行摘要.PDF”
内容类型:application / pdf
答案 0 :(得分:10)
感谢Thomas的工作。
我将ByteArrayHttpMessageConverter添加到RestTemplate并且它有效。
我添加的代码:
ByteArrayHttpMessageConverter byteArrayHttpMessageConverter = new ByteArrayHttpMessageConverter();
List<MediaType> supportedApplicationTypes = new ArrayList<MediaType>();
MediaType pdfApplication = new MediaType("application","pdf");
supportedApplicationTypes.add(pdfApplication);
byteArrayHttpMessageConverter.setSupportedMediaTypes(supportedApplicationTypes);
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(byteArrayHttpMessageConverter);
restTemplate = new RestTemplate();
restTemplate.setMessageConverters(messageConverters);
Object result = getRestTemplate().getForObject(url, returnClass, parameters);
byte[] resultByteArr = (byte[])result;