美好的一天,我一直在苦苦挣扎,不知道该怎么做。我正在使用android Asynchronus Http Library here发送一个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,所以我不知道为什么我收到错误。我还要求params的getContentType看到,它给了我PARSE抱怨的错误。我能做错什么?任何帮助都是高度赞赏的。提前致谢
答案 0 :(得分: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);