Android异步Http客户端中带有RequestParams的JSON数组

时间:2017-01-13 12:47:18

标签: android json http-post

我无法向服务器发送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”的数组,然后在其中添加带有键值项的对象。

1 个答案:

答案 0 :(得分:-1)

建议在Android https://developer.android.com/training/volley/index.html

中使用Volley进行异步调用