当前位置: 首页 > 知识库问答 >
问题:

使用Spring-RestTemplate时获取HttpMessageNotReadableException异常

刘才俊
2023-03-14
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class Order] from 
headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));

那么,为什么它要尝试将响应解析为JSON呢?我该如何解决呢?

谢谢!!

共有1个答案

谢昊乾
2023-03-14

最常见的原因是您得到了一些不符合模型中定义的反序列化规则的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());
}
 类似资料:
  • 问题内容: 我正在使用URL类从中读取InputStream。有什么我可以使用RestTemplate的方法吗? 我怎样才能 用,而不是使用? 问题答案: 您不应该直接获得。旨在封装处理响应(和请求)内容。它的优势在于处理所有IO,并为您提供现成的Java对象。 的一位原始作者Brian Clozel 表示: 并不意味着流响应主体;它的合同不允许这样做,而且已经存在了很长时间,以至于在不中断许多应

  • 我使用URL类从中读取InputStream。有什么方法可以使用RestTemplate实现这一点吗? 如何使用RestTemplate而不是使用URL来获取InputStream?

  • 我试图向Api Rest发出get请求,但我总是得到404,尽管如此,如果尝试在浏览器或邮递员中复制queryUrl,它会非常工作。 我也试过这个: 但什么都没变。有人能帮我吗?

  • 我正在尝试使用RESTTemplate使用GET请求命中URL。它给出了一个异常,说明http协议不受支持。 我可以使用简单的旧HttpURLConnection方法访问endpoint来获得预期的响应。但是我无法使用rest模板这样做。我没有使用任何类型的VPN或代理,而尝试这一点。 下面是我正在使用的代码。我将用ip:port替换实际使用的ip和端口。 谢谢你。 编辑:使用HttpUrlCon

  • 我有两个问题: 如何使用spring RestTemplate映射JSON对象列表。 如何映射嵌套的JSON对象。 我正在尝试使用https://bitpay.com/api/rates,方法是按照http://spring.io/guides/gs/consource-rest/的教程学习。

  • 我用的是swapi。在Spring Boot中获取应用程序数据的dev API。我需要用一个行星的名字来获取它的信息。因此,我使用下一个url:https://swapi.dev/api/planets/?search=Tatooine.JSON结果如下所示: 现在,在Java中,我使用服务中的下一个代码: 我只需要得到结果的数组,但是,我如何从对象得到结果的数组?