使用 Spring 时出现 HttpMessageNotReadableException 异常 - RestTemplate
Get HttpMessageNotReadableException Exception when using Spring - RestTemplate
我正在使用 springframework -RestTemplate,
为了发出 get 请求,并将 xml 响应转换为 java object。
操作后:RestTemplate.exchange,
我得到以下异常:
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class Order] from
客户端的响应在XML,我把它加到headers:
headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));
那么为什么它试图将响应解析为 JSON?
我该如何解决?
谢谢!!
最常见的原因是您得到的一些 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());
}
我正在使用 springframework -RestTemplate, 为了发出 get 请求,并将 xml 响应转换为 java object。 操作后:RestTemplate.exchange, 我得到以下异常:
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class Order] from
客户端的响应在XML,我把它加到headers:
headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));
那么为什么它试图将响应解析为 JSON? 我该如何解决?
谢谢!!
最常见的原因是您得到的一些 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());
}