1

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

4

1 に答える 1

0

使用している spring-mvc のバージョンについては言及していませんが、3.1 を使用している場合は、@RequestMapping に「プロデュース」パラメーターを追加できます。 produces="application/json"

于 2012-05-02T16:19:15.330 に答える