首页  >  文章  >  Java  >  为什么在向 Spring MVC 控制器发送 JSON 请求时收到 406(不可接受)错误?

为什么在向 Spring MVC 控制器发送 JSON 请求时收到 406(不可接受)错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 10:28:26183浏览

Why am I getting a 406 (Not Acceptable) Error When Sending a JSON Request to My Spring MVC Controller?

Spring JSON 请求返回 406(不可接受)

当尝试向 Spring MVC 控制器发送 JSON 请求时,一些用户遇到“406 不可接受”错误。此问题源于请求的内容类型(“application/json”)与控制器的响应能力不匹配。

在 Spring MVC 中,控制器方法用“@ResponseBody”注释,以表明返回值应以 JSON 形式写入 HTTP 响应正文。但是,如果没有在应用程序上下文中注册正确的 HTTPMessageConverter,Spring 将无法将返回值转换为请求的格式。

此错误的常见原因是应用程序中缺少 Jackson 库类路径。 Jackson 库提供了 HTTPMessageConverter 负责将 Java 对象转换为 JSON,反之亦然。

要解决此问题,请按照以下步骤操作:

  1. 确保以下 Jackson 库包含在应用程序类路径中:

    • jackson-core-asl.jar
    • jackson-mapper-asl.jar
  2. 如果您使用的是 Spring 3.0 或更高版本,请将以下行添加到 spring-servlet.xml 配置文件中以启用注释驱动的 MVC 配置:

    <code class="xml"><mvc:annotation-driven /></code>
  3. 删除不必要的“headers=”接受控制器方法注释中的=/"" 指令。该指令强制 Spring 接受任何标头,并可能导致兼容性问题。

通过实现这些步骤,HTTPMessageConverter 将被注册,Spring 将能够按预期将控制器的返回值转换为 JSON .

以上是为什么在向 Spring MVC 控制器发送 JSON 请求时收到 406(不可接受)错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn