获取HttpMessageNotReadableException使用Spring时的异常 - RestTemplate

时间:2017-02-17 08:58:09

标签: java xml spring resttemplate

我使用springframework -RestTemplate, 为了获取请求,并将xml响应转换为java对象。 操作后:RestTemplate.exchange, 我得到以下例外:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class Order] from 

来自客户端的XML响应,我将其添加到标题中:

headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));

那么为什么它试图将响应解析为JSON? 我该如何解决?

谢谢!

1 个答案:

答案 0 :(得分:1)

最常见的原因是您获得的某些XML不符合模型中定义的反序列化规则(或者可能是格式错误的XML)。

其他可能的原因是您的RestTemplate缺少能够处理XML转换的消息转换器。默认情况下,Spring Boot会配置Jaxb2RootElementHttpMessageConverter,但前提是您的类路径中有JAXB2,因此您应该检查项目是否可以使用此依赖项。

您可以使用以下代码打印在RestTemplate中注册的邮件转换器及其接受的媒体类型:

for (HttpMessageConverter<?> converter : restTemplate.getMessageConverters()) {
    System.out.println("Converter: " + converter.getClass().getSimpleName() + ", supports: "
                + converter.getSupportedMediaTypes().toString());
}