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

Spring Boot 3.4中MockMvc设APPLICATION_JSON却发UTF-8请求报错415

解决Spring Boot 3.4 MockMvc测试415 Unsupported Media Type问题

测试代码

mvc.perform(post(URL_DUPLICATE_OBJECTIVE_5).contentType(MediaType.APPLICATION_JSON)
.with(SecurityMockMvcRequestPostProcessors.csrf()).content(DUPLICATE_OBJECTIVE))

响应信息

Status = 415
Error message = Content-Type 'application/json;charset=UTF-8' is not supported.
Headers = [Accept:"application/json, application/yaml, application/*+json", X-Content-Type-Options:"nosniff", X-XSS-Protection:"0", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY"]
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []

排查方向及解决方案

  • 检查目标接口的请求参数绑定
    确认URL_DUPLICATE_OBJECTIVE_5对应的控制器方法是否正确声明了请求体接收逻辑:比如是否遗漏@RequestBody注解,或者接收参数的自定义类缺少无参构造函数、字段getter/setter(可通过Lombok的@NoArgsConstructor/@Data注解快速解决)。

  • 验证请求JSON格式合法性
    检查DUPLICATE_OBJECTIVE变量的JSON内容是否存在语法错误,比如引号不匹配、逗号遗漏、结构嵌套错误等。格式非法的JSON会导致Spring无法解析,触发415错误。

  • 核对控制器的consumes属性
    查看目标接口的@PostMapping(或@RequestMapping)是否指定了consumes属性,如果属性值仅包含application/x-www-form-urlencoded等非JSON类型,需要调整为包含MediaType.APPLICATION_JSON_VALUE,或者直接移除consumes属性(Spring Boot默认支持JSON请求)。示例错误配置:

    @PostMapping(value = "/duplicate", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    
  • 排查Jackson依赖与配置
    确认项目已引入spring-boot-starter-web依赖(该依赖默认包含Jackson JSON处理包);如果自定义了Jackson配置,检查是否存在禁用默认反序列化、修改媒体类型映射等错误配置,导致无法解析JSON请求。

  • 统一MockMvc初始化配置
    对比当前测试类与其他正常测试类的MockMvc初始化逻辑,确认是否使用了不同的@AutoConfigureMockMvc参数、自定义WebMvcConfigurer等,保证配置一致性,避免因内容协商规则差异导致的媒体类型不支持问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:42:40