aciko11
aciko11

Reputation: 65

How do i send body data with a JsonObjectRequest? Android-Volley library

I am trying to send data to my server. I create a JsonObject and I pass it as a parameter when creating the JsonObjectRequest. It doesn't give any error, but it is not returning anything. Tried with postman and it is working fine.

This is my code:

    JSONObject jsonBody = new JSONObject();

    try {
        jsonBody.put("firstname", "asd");
        jsonBody.put("lastname", "asd");
        jsonBody.put("id", "1");
    } catch (JSONException e) {
        e.printStackTrace();
    }



    //creating a JsonObjectRequest
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showPlayersUrl,
    jsonBody, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            JSONArray players;
            try{
                players = response.getJSONArray("Players");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    },
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    requestQueue.add(jsonObjectRequest);
}

Upvotes: 1

Views: 1363

Answers (2)

aciko11
aciko11

Reputation: 65

Ok, found the problem. Server side i wasn't accepting the data as json format. Just had to add this and it works:

$_POST = json_decode(file_get_contents('php://input'), true);

Upvotes: 1

user10823030
user10823030

Reputation:

Try it:

RequestQueue queue = Volley.newRequestQueue(this);

private void makeJsonObjReq() {
showProgressDialog();
        Map<String, String> postParam= new HashMap<String, String>();
        postParam.put("un", "[email protected]");
        postParam.put("p", "somepasswordhere");

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        Const.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();
            }
        }) {

    @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);
queue.add(jsonObjReq);



}

Upvotes: 0

Related Questions