2016-09-29 6 views
0

私は次のようなJSON送信しようとしています:は返し400コード

{"communities" : [381, 382, 383, 384, 385]} 

を私は私はハッシュマップを送信しようとしています。このコードを使用してproblemstを持っていません

JSONObject dataToPost = new JSONObject(); 

JSONArray jsa = new JSONArray(); 
jsa.put(381); 
jsa.put(382); 
jsa.put(383); 
jsa.put(384); 
jsa.put(385); 
jsa.put(386); 

try { 
    dataToPost.put("communities", jsa); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

final JSONObject dataFinal = dataToPost; 

Log.i("fdsfs", dataFinal.toString()); 

StringRequest postRequest = new StringRequest(Request.Method.POST, GlobalValues.registerSetCommunities, 

     new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 

       manageSuccessResponse(response); 
      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

       manageErrorResponse(error); 
      } 
     } 
) { 

    @Override 
    public byte[] getBody() { 
     try { 
      return dataFinal.toString().getBytes("utf-8"); 
     } catch (UnsupportedEncodingException e) { 
      return null; 
     } 
    } 

    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
     Map<String, String> headers = new HashMap<String, String>(); 
     headers.put("Content-Type", "application/x-www-form-urlencoded"); 
     headers.put("Authorization", "Bearer " + Credentials.getAuthToken(mContext)); 
     return headers; 
    } 
}; 

postRequest.setRetryPolicy(new DefaultRetryPolicy(
     GlobalValues.request_timeout, 
     DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
     DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

Volley.newRequestQueue(mContext).add(postRequest); 

私はJsonObjectRequestとした試みた別の方法:値は、サーバがそのように認識し、私のコード400を返していない整数の配列であるべき時にキーと値などが、この場合のString。

JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, GlobalValues.registerSetCommunities, dataFinal, new Response.Listener<JSONObject>() { 
    @Override 
    public void onResponse(JSONObject response) { 
     Log.i("SENDMOVE", response.toString()); 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     manageErrorResponse(error); 
    } 
}) { 
    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
     Map<String, String> headers = new HashMap<String, String>(); 
     headers.put("cache-control", "no-cache"); 
     headers.put("Content-Type", "application/json"); 
     headers.put("Authorization", "Bearer " + Credentials.getAuthToken(mContext)); 
     return headers; 
    } 
}; 

request.setRetryPolicy(new DefaultRetryPolicy(
     GlobalValues.request_timeout, 
     DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
     DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

Volley.newRequestQueue(mContext).add(request); 
+0

要求が正常に受信された場合は、サーバー側で値を印刷してみてください。どのコードがそのエラーの原因になっているのかは分かりません。 – Enzokie

答えて

0

第二の方法を使用して

headers.put("Content-Type", "application/json"); 

はトリックをした削除:ここではコードです。

関連する問題