【问题标题】:No suitable HttpMessageConverter found for response type [class java.lang.Boolean] and content type [application/json]没有为响应类型 [class java.lang.Boolean] 和内容类型 [application/json] 找到合适的 HttpMessageConverter
【发布时间】:2025-12-29 16:35:17
【问题描述】:

我在我的代码中调用了一个休息端点,该端点返回一个简单的字符串“真”或“假”。我已将我的弹簧靴升级到 2.4。下面的代码现在正在抛出异常。

 ResponseEntity<Boolean> status = restTemplate.getForEntity(uri, Boolean.class);

org.springframework.web.client.UnknownContentTypeException:无法提取响应:没有为响应类型 [class java.lang.Boolean] 和内容类型 [application/json] 找到合适的 HttpMessageConverter 在 org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:126) ~[spring-web-5.3.8.jar:5.3.8] 在 org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1037) ~[spring-web-5.3.8.jar:5.3.8] 在 org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1020) ~[spring-web-5.3.8.jar:5.3.8] 在 org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:778) ~[spring-web-5.3.8.jar:5.3.8]

如何解决这个问题?

问候, 大卫

【问题讨论】:

    标签: spring spring-boot spring-resttemplate


    【解决方案1】:

    restTemplate 没有合适的 MessageConverters 时会发生此错误。默认情况下,Spring boot 的restTemplate 提供了可以转换布尔响应的消息转换器。

    但是,如果您覆盖消息转换器列表,例如如下 - restTemplate.setMessageConverters(Arrays.asList(new ByteArrayHttpMessageConverter()));

    然后,Spring boot 将无法转换消息。

    只需验证您正在使用的restTemplate 实例中添加了哪些消息转换器,并检查MappingJackson2HttpMessageConverter 是否存在。或者您可以使用自己的自定义消息转换器。

    【讨论】:

      【解决方案2】:

      删除刚刚添加的响应实体,如下所示。

      Boolean  status = restTemplate.getForEntity(uri, Boolean.class);
      

      【讨论】: