首頁  >  文章  >  Java  >  為什麼在向 Spring MVC 控制器發送 JSON 請求時收到 406(不可接受)錯誤?

為什麼在向 Spring MVC 控制器發送 JSON 請求時收到 406(不可接受)錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 10:28:26115瀏覽

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