Volleyball sends a JSONObject to the server with the POST method

I want to send a jsonobject with a lower format to the server using the volleyball library {"user_id": 12, "answers": {"11": 3, "12": 4, "13": 5}}

JSONObject object = new JSONObject(); try { object.put("user_id", user_id); JSONObject answers = new JSONObject(); for (int i = 0; i < questions.size(); i++) { JSONObject answer = new JSONObject(); answer.put(questions.get(i).getId(),questions.get(i).getAnswer()); answers.put("answers", answer); object.put("answers", answer); } } catch (JSONException e) { e.printStackTrace(); } 

If I want to use StringRequest , how to send this JsonObject to the server using the POST method

+3
post android-volley jsonobject
Aug 25 '15 at 7:09
source share
2 answers

You can use the following working sample code. I have tested. Hope this helps!

  try { jsonBody = new JSONObject(); jsonBody.put("Title", "VolleyApp Android Demo"); jsonBody.put("Author", "BNK"); jsonBody.put("Date", "2015/08/26"); requestBody = jsonBody.toString(); StringRequest stringRequest = new StringRequest(1, url, new Response.Listener<String>() { @Override public void onResponse(String response) { textView.setText(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { textView.setText(error.toString()); } }) { @Override public String getBodyContentType() { return String.format("application/json; charset=utf-8"); } @Override public byte[] getBody() throws AuthFailureError { try { return requestBody == null ? null : requestBody.getBytes("utf-8"); } catch (UnsupportedEncodingException uee) { VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8"); return null; } } }; MySingleton.getInstance(this).addToRequestQueue(stringRequest); } catch (JSONException e) { e.printStackTrace(); } 

UPDATE: To create a JSONObject as your requirement, use the following:

  JSONObject jsonObject = new JSONObject(); try { jsonObject.put("11", 3); jsonObject.put("12", 4); jsonObject.put("13", 5); JSONObject jsonObject2 = new JSONObject().put("answers", jsonObject); jsonObject2.put("user_id", 12); } catch (JSONException e) { e.printStackTrace(); } 
+5
Aug 26 '15 at 1:50
source share

use the following code example

 RequestQueue queue = Volley.newRequestQueue(this); private void serverFronJsonObjReq() { showProgressDialog(); Map<String, String> postParam= new HashMap<String, String>(); postParam.put("username", "singh@gmail.com"); postParam.put("password", "123456"); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, Const.BASE_URL_LOGIN, new JSONObject(postParam), new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d(TAG, response.toString()); msgResponse.setText(response.toString()); hideProgressDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); hideProgressDialog(); } }) { /** Passing some request headers * */ @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } }; jsonObjReq.setTag(TAG); // Adding request to request queue queue.add(jsonObjReq); // Cancelling request /* if (queue!= null) { queue.cancelAll(TAG); } */ } 
0
Mar 14 '18 at 7:56
source share



All Articles