をJSONを送信する:406エラー私はこのようなjQueryのAJAX呼び出しを持って春のコントローラに
$.ajax({
type: "post",
url: url,
data: JSON.stringify(formSubmit),
contentType: "application/json",
dataType: "json",
success: function(xhr,status) {
console.log("Return Data:"+xhr.responseText)
});
私のコントローラは、次のようになります。
@RequestMapping(value = "/doIt", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public MyObject activityPerformed(HttpServletRequest request, HttpServletResponse response, @RequestBody String jsonData) {
logger.debug("JSON INPUT:"+jsonData);
MyObject o = new MyObject("STUFF");
return o;
}
これは406エラーをスローします。私は私の応答ヘッダに私はこれを持っているというのが私のブラウザで見ることができます:私はマッピングの一部が固定されている必要があります生成と思っ
Content-Type:"text/html;charset=utf-8"
。
ajax呼び出しの「contentType」を削除すると、406エラーは表示されませんが、URLEncodedのjsonDataパラメータが返されます。いいえ、私はデコードを行うことができると仮定していますが、それは「正しい」とは言えません。
したがって、ajax呼び出しでcontentType: "application/json"のないURLにエンコードされていないJSONをコントローラに送信するにはどうすればよいですか?
またはコントローラレスポンスのcontentTypeを設定するにはどうすればよいですか?
サーバーのセキュリティログを確認しましたか?リクエストがmod_securityルールに違反した場合、Apacheはエラーを生成します。したがって、エラーを引き起こすjsonDataリクエストではない可能性があります。 – Dexter
私はtomcat 8.0.30を使用しています – mmaceachran
セットアップと同じ問題を抱えている別の人物:http://stackoverflow.com/questions/7462202/spring-json-request-getting-406-not-acceptable。私はあなたの設定が何であるか分かりませんが、これはエラーの原因にあなたを導く助けとなりますので、あなたはどのような詳細を提供するのか知っています。彼らはあなたと同じリクエストヘッダーを使用していませんが、答えはあなたにどのような方向を示すかもしれません。 – Dexter