2017-01-13 6 views
1

У меня возникли проблемы с отправкой запроса JSON POST на мой сервер.JSON Array с RequestParams в Android Асинхронный клиент Http

Мой сервер принимать POST с приложения/JSON как тип и пример будет выглядеть так:

{ 
    "name": "Group4", 
    "users": [ 
    {"email": "[email protected]"}, 
    {"email": "[email protected]"}, 
    ] 
} 

Если я пошлю это клиентом REST я получаю 200 OK в ответ, все отлично.

Мой Android-клиент использует Android Async HTTP Library (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, как мой пример. Я не знаю, есть ли у меня возможность получить строку JSON этого RequestParams. Я могу только получить доступ к параметру в виде строки:

name=Test&users=[{"email":"[email protected]"}, {"email":"[email protected]"}] 

Мой сервер не даже принять запрос и не непосредственно с ошибкой:

AttributeError: 'unicode' object has no attribute 'iteritems' 

Проблема должна быть в точке, где я создайте RequestParams. Может кто-нибудь сказать мне, что с этим не так? Я думал, что мне нужно создать массив с именем «users», а затем добавить в него объекты с ключевыми значениями.

ответ

0

List<> Просто поместите в свой RequestParams. Вот пример:

RequestParams params = new RequestParams(); 
List<String> list = new ArrayList<String>(); // Ordered collection 

list.add("Java"); 
list.add("C"); 

params.put("languages", list); 

//above code will generate url params: "languages[0]=Java&languages[1]=C" 

Поэтому вам не нужно добавлять его вручную, используя последовательность циклов. См. Документы here

 Смежные вопросы

  • Нет связанных вопросов^_^