我无法向服务器发送JSON POST请求。
我的服务器接受带有application / json类型的POST,示例如下:
{
"name": "Group4",
"users": [
{"email": "user@example.org"},
{"email": "user2@example.org"},
]
}
如果我是通过REST客户端发送的,我会收到200 OK作为回复,一切都很好。
我的Android客户端使用 Android异步HTTP库(http://loopj.com/android-async-http/),RequestParams类的文档在https://loopj.com/android-async-http/doc/com/loopj/android/http/RequestParams.html
RequestParams params = new RequestParams();
String userName = getUserName();
List<String> userList = getUserList();
params.put("name", userName);
JSONArray users = new JSONArray();
for(String user : userList) {
JSONObject obj = new JSONObject();
try {
obj.put("email", user);
} catch (JSONException e) {
// ...
}
users.put(obj);
}
params.put("users", users);
我认为这会像我的例子一样创建一个JSON。我不知道是否有可能获得此RequestParams的JSON字符串。我只能以String形式访问参数:
name=Test&users=[{"email":"user@example.org"}, {"email":"user2@example.org"}]
我的服务器甚至不接受请求,并直接导致错误:
AttributeError: 'unicode' object has no attribute 'iteritems'
问题必须是我创建RequestParams的时候。有人能告诉我这有什么问题吗?我想我必须创建一个名为“users”的数组,然后在其中添加带有键值项的对象。
答案 0 :(得分:-1)
建议在Android https://developer.android.com/training/volley/index.html
中使用Volley进行异步调用