You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC用RestTemplate遇HttpMessageConverter缺失错误,SpringBoot正常

问题解决:Spring MVC中RestTemplate报错"Could not extract response: no suitable HttpMessageConverter found"

原因分析

Spring Boot会通过自动配置(如RestTemplateAutoConfiguration)为RestTemplate默认添加Jackson JSON消息转换器,而纯Spring MVC环境下手动new RestTemplate()时,默认的转换器列表中可能缺少处理application/json类型的MappingJackson2HttpMessageConverter,导致无法解析接口返回的JSON响应。

解决方案

1. 确保依赖完整

首先确认项目中已引入Jackson相关依赖(Maven示例):

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>你的版本号</version>
</dependency>

若Spring MVC项目的spring-web依赖未间接引入该包,需手动添加。

2. 手动配置RestTemplate的JSON转换器

不要直接使用new RestTemplate()的实例,手动添加JSON转换器:

方式一:直接实例化时配置

RestTemplate restTemplate = new RestTemplate();
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
// 明确设置支持application/json类型
jsonConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
restTemplate.getMessageConverters().add(jsonConverter);

Courses courses = restTemplate.getForObject("http://localhost:8090/apple/courses", Courses.class);

方式二:通过配置类注册RestTemplate(推荐)

在Spring MVC配置类中定义统一配置的RestTemplate Bean:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.util.Arrays;

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        jsonConverter.setSupportedMediaTypes(Arrays.asList(
                MediaType.APPLICATION_JSON,
                MediaType.APPLICATION_JSON_UTF8 // 兼容旧版UTF-8编码的JSON响应
        ));
        restTemplate.getMessageConverters().add(jsonConverter);
        return restTemplate;
    }
}

后续在控制器中通过@Autowired注入RestTemplate即可使用。

3. 额外确认(可选)

虽然Spring Boot中正常运行说明实体类无问题,仍可快速检查Courses类:

  • 有无无参构造函数
  • 字段是否有对应的getter/setter方法
  • 字段名与JSON键名不一致时,是否添加了@JsonProperty注解

内容的提问来源于stack exchange,提问作者Kirtiman Bhagawati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 23:25:23