JSON応答で応答するメソッドを次に示します。このコードは GlassFish で動作しますが、Tomcat 7.0.27 で実行するとエラーが発生します
HTTP ステータス: 406
このリクエストによって識別されるリソースは、リクエストの「accept」ヘッダー () に従って、受け入れられない特性を持つ応答を生成することしかできません。
@RequestMapping(value = "/test", headers="Accept=application/json", method = RequestMethod.POST)
public @ResponseBody
Map<String, ? extends Object> getAuthPOST(@RequestBody String jsonBody) throws JSONException {
JSONObject j = new JSONObject(jsonBody);
System.out.println(j.keys());
Iterator i = j.keys();
Map<String, Object> result = new HashMap<String, Object>();
while (i.hasNext()) {
String key = (String) i.next();
result.put(String.valueOf(key), String.valueOf(j.getString(key)));
}
return result;
}
アップデート:
リクエストが返されたときのヘッダーは次のとおりです
HTTP/1.1 406 Not Acceptable Content-Length: 1070 Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Date: Wed, 02 May 2012 15:47:24 GMT Connection: close
Content-Type を text/html に変更します。
ここに私のリクエストヘッダーがあります:
POST /SpringMVC/login/test HTTP/1.1 Accept: application/json Content-Type: application/json