1

美好的一天,一直在为此苦苦挣扎,不知道该怎么办了。我在这里使用 android Asynchronus Http Library发送 POST 进行解析,但我不断收到此错误消息。

 {"code":107,"error":"This endpoint only supports Content-Type: application/json requests, not application/x-www-form-urlencoded."}

这是我的代码的相关部分:

           client = new AsyncHttpClient();


        client.addHeader("Content-Type", "application/json");
        client.addHeader("X-Parse-Application-Id", context.getResources().getString(R.string.app_id));
        client.addHeader("X-Parse-REST-API-Key", context.getResources().getString(R.string.rest_api_key));


    RequestParams params = null;
    JSONObject json = new JSONObject();

           try {
                    json.put(NAME, player_text.getText().toString());
                    json.put(CLUB, club_text.getText().toString());
                } catch (JSONException e) {
                    e.printStackTrace();
                }

   params = new RequestParams("json",json); //takes a key value pair

   client.post(context, url, params, responsehandler); // posting to https://api.parse.com/1/classes/ABCDER/

我已将标头内容类型设置为 application/json 所以我不知道为什么会出现错误。我还请求参数中的 getContentType 来查看,它给了我 PARSE 抱怨的错误。我可能做错了什么?任何帮助都受到高度赞赏。提前致谢

4

1 回答 1

0

JSON 需要作为数据/正文发布,而不是在 URL 参数中编码。

这是另一个显示方法的答案:POSTing JSON/XML using android-async-http (loopj)

所以对你来说:

JSONObject json = new JSONObject();

try {
    json.put(NAME, player_text.getText().toString());
    json.put(CLUB, club_text.getText().toString());
} catch (JSONException e) {
    e.printStackTrace();
}

StringEntity body = new StringEntity(json.toString());

client.post(context, url, body, "application/json", responsehandler);
于 2014-06-27T19:36:09.917 回答