ホームページ  >  記事  >  Java  >  Spring MVC コントローラーに JSON リクエストを送信すると 406 (Not Acceptable) エラーが発生するのはなぜですか?

Spring MVC コントローラーに JSON リクエストを送信すると 406 (Not Acceptable) エラーが発生するのはなぜですか?

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 を返す (受け入れられません)

JSON リクエストを Spring MVC コントローラーに送信しようとすると、一部のユーザーが「406 受け入れられません」エラー。この問題は、要求されたコンテンツ タイプ (「application/json」) とコントローラーの応答機能の間の不一致が原因で発生します。

Spring MVC では、コントローラー メソッドには、戻り値は HTTP 応答本文に JSON として書き込まれる必要があります。ただし、適切な HTTPMessageConverter がアプリケーション コンテキストに登録されていない場合、Spring は戻り値を要求された形式に変換できません。

このエラーの一般的な原因は、アプリケーションに Jackson ライブラリが存在しないことです。クラスパス。 Jackson ライブラリは、Java オブジェクトと JSON 間の変換を行う HTTPMessageConverter を提供します。

問題を解決するには、次の手順に従ってください。

  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=」を削除します。コントローラー メソッド アノテーションからの Accept=/"" ディレクティブ。このディレクティブは Spring に任意のヘッダーの受け入れを強制するため、互換性の問題が発生する可能性があります。

これらの手順を実装すると、HTTPMessageConverter が登録され、Spring はコントローラーの戻り値を期待どおりに JSON に変換できるようになります。 .

以上がSpring MVC コントローラーに JSON リクエストを送信すると 406 (Not Acceptable) エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。