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

RestTemplate报错‘application/json不受支持’问题排查求助

排查"Content type 'application/json' not supported"错误的几个关键点

我之前也碰到过一模一样的问题,大多是一些容易忽略的配置或代码细节导致的,给你梳理几个排查方向:

服务端RestController检查

  • 确认方法参数加了@RequestBody注解
    这是最常见的原因!如果你的Controller方法接收POJO但没加@RequestBody,Spring不知道要把请求体的JSON转换成对象,就会抛出这个错误。正确写法应该是:
    @PostMapping("/your-endpoint")
    public String handleRequest(@RequestBody YourPojo pojo) {
        // 业务逻辑
        return "success";
    }
    
  • 检查@PostMapping的consumes属性
    确保接口明确声明支持application/json类型的请求体,比如:
    @PostMapping(value = "/your-endpoint", consumes = MediaType.APPLICATION_JSON_VALUE)
    
    如果没指定consumes,虽然Spring默认可能支持,但某些场景下(比如配置了其他消息转换器优先级更高)会出问题。

客户端RestTemplate配置检查

  • 确认RestTemplate包含MappingJackson2HttpMessageConverter
    虽然你加了jackson-databind依赖,但如果是自定义的RestTemplate实例,可能没有自动注册这个转换器。可以手动添加:
    RestTemplate restTemplate = new RestTemplate();
    // 确保添加Jackson转换器(如果没有的话)
    boolean hasJacksonConverter = restTemplate.getMessageConverters().stream()
            .anyMatch(c -> c instanceof MappingJackson2HttpMessageConverter);
    if (!hasJacksonConverter) {
        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
    }
    
  • 请求时正确设置Content-Type头
    发送请求时必须显式设置请求头的Content-Type为application/json,否则RestTemplate可能默认发送其他类型(比如application/x-www-form-urlencoded),导致服务端不识别:
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<YourPojo> requestEntity = new HttpEntity<>(yourPojoObject, headers);
    String response = restTemplate.postForObject("http://your-server/your-endpoint", requestEntity, String.class);
    

POJO类本身的检查

  • 确保POJO有无参构造函数
    Jackson默认需要无参构造来实例化对象,如果你的POJO只有带参构造,没有无参的,会导致服务端无法解析JSON请求体,间接引发这个错误。
  • 检查字段的getter/setter是否齐全
    Jackson依赖getter/setter来访问和设置字段值,如果某个字段缺少对应的方法,可能会导致解析失败,进而触发content type不支持的错误。

其他潜在问题

  • 检查Jackson与Spring版本兼容性
    如果Jackson版本和Spring版本差距过大,可能会出现兼容性问题。可以查看pom.xml中Spring自带的Jackson版本,确保你引入的jackson-databind版本和它一致(或者用Spring的依赖管理统一版本)。
  • 检查服务端是否禁用了JSON消息转换器
    如果你的项目中有自定义的WebMvcConfigurer,检查是否在configureMessageConverters方法中移除了MappingJackson2HttpMessageConverter,如果是,需要重新添加回去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:14:10