How to send a POST request using volley with string body? How to send a POST request using volley with string body? android android

How to send a POST request using volley with string body?


You can refer to the following code (of course you can customize to get more details of the network response):

try {    RequestQueue requestQueue = Volley.newRequestQueue(this);    String URL = "http://...";    JSONObject jsonBody = new JSONObject();    jsonBody.put("Title", "Android Volley Demo");    jsonBody.put("Author", "BNK");    final String requestBody = jsonBody.toString();    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {        @Override        public void onResponse(String response) {            Log.i("VOLLEY", response);        }    }, new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError error) {            Log.e("VOLLEY", error.toString());        }    }) {        @Override        public String getBodyContentType() {            return "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;            }        }        @Override        protected Response<String> parseNetworkResponse(NetworkResponse response) {            String responseString = "";            if (response != null) {                responseString = String.valueOf(response.statusCode);                // can get more details such as response.headers            }            return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));        }    };    requestQueue.add(stringRequest);} catch (JSONException e) {    e.printStackTrace();}


I liked this one, but it is sending JSON not string as requested in the question, reposting the code here, in case the original github got removed or changed, and this one found to be useful by someone.

public static void postNewComment(Context context,final UserAccount userAccount,final String comment,final int blogId,final int postId){    mPostCommentResponse.requestStarted();    RequestQueue queue = Volley.newRequestQueue(context);    StringRequest sr = new StringRequest(Request.Method.POST,"http://api.someservice.com/post/comment", new Response.Listener<String>() {        @Override        public void onResponse(String response) {            mPostCommentResponse.requestCompleted();        }    }, new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError error) {            mPostCommentResponse.requestEndedWithError(error);        }    }){        @Override        protected Map<String,String> getParams(){            Map<String,String> params = new HashMap<String, String>();            params.put("user",userAccount.getUsername());            params.put("pass",userAccount.getPassword());            params.put("comment", Uri.encode(comment));            params.put("comment_post_ID",String.valueOf(postId));            params.put("blogId",String.valueOf(blogId));            return params;        }        @Override        public Map<String, String> getHeaders() throws AuthFailureError {            Map<String,String> params = new HashMap<String, String>();            params.put("Content-Type","application/x-www-form-urlencoded");            return params;        }    };    queue.add(sr);}public interface PostCommentResponseListener {    public void requestStarted();    public void requestCompleted();    public void requestEndedWithError(VolleyError error);}


Name = editTextName.getText().toString().trim();Email = editTextEmail.getText().toString().trim();Phone = editTextMobile.getText().toString().trim();JSONArray jsonArray = new JSONArray();jsonArray.put(Name);jsonArray.put(Email);jsonArray.put(Phone);final String mRequestBody = jsonArray.toString();StringRequest stringRequest = new StringRequest(Request.Method.PUT, OTP_Url, new Response.Listener<String>() {    @Override    public void onResponse(String response) {        Log.v("LOG_VOLLEY", response);    }}, new Response.ErrorListener() {    @Override    public void onErrorResponse(VolleyError error) {        Log.e("LOG_VOLLEY", error.toString());    }}) {    @Override    public String getBodyContentType() {        return "application/json; charset=utf-8";    }    @Override    public byte[] getBody() throws AuthFailureError {        try {            return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");        } catch (UnsupportedEncodingException uee) {            VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", mRequestBody, "utf-8");            return null;        }    }};stringRequest.setShouldCache(false);VollySupport.getmInstance(RegisterActivity.this).addToRequestque(stringRequest);