2017-01-13 10 views
1

私のサーバーにJSON POSTリクエストを送信できません。Android非同期HttpクライアントのRequestParamsを使用したJSON配列

私のサーバーは、タイプとしてアプリケーション/ JSONとPOSTを受け入れ、一例は次のようになります:私は、RESTクライアントによってこれを送信する場合

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

は私が応答、細かいすべてとしてOK 200を取得します。

私のAndroidのクライアントは、私は、これはまさに私の例のようなJSONを作成する考え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); 

ここにあるAndroidの非同期HTTPライブラリhttp://loopj.com/android-async-http/)とRequestParamsクラスのドキュメントを使用しています。このRequestParamsのJSON文字列を取得できるかどうかはわかりません。私は唯一の文字列としてパラメータにアクセスすることができます。

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

私のサーバーであっても、要求を受け入れ、エラーと直接失敗していない:

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

問題は私のポイントでなければなりませんRequestParamsを作成します。誰かがそれで間違っていることを教えてもらえますか?私は "users"という名前の配列を作成し、その中にキー値の項目を持つオブジェクトを追加する必要があると考えました。

答えて

-1

は、非同期はちょうどあなたのRequestParamsList<>を置く

0

アンドロイドhttps://developer.android.com/training/volley/index.htmlに呼び出すためにバレーボールを使用することをお勧めします。例は次のとおりです。

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

関連する問題