Eggy
Eggy

Reputation: 551

send post from JsonArrayRequest volley to server not working

I already tried some example about send post from JsonArrayRequest volley to server, but it's not working and no have error in log..

so when I call a post in server the post can't get and my data when not call post is show, but now when call post, the data not show

this the code

public void JSON_DATA_WEB_CALL() {
            CustomJsonArrayRequest request = new CustomJsonArrayRequest (GET_JSON_DATA_HTTP_URL,
                    new Response.Listener<JSONArray>() {
                        @Override
                        public void onResponse(JSONArray response) {

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

                        }
                    }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    HashMap<String, String> params = new HashMap<String, String>();
                    params.put("name", "value");
                    return params;
                }
            };
            requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(request);
    }

and this the code for new class

    public class CustomJsonArrayRequest extends JsonRequest<JSONArray> {

        public CustomJsonArrayRequest(String url, Response.Listener<JSONArray> listener, Response.ErrorListener errorListener) {
            super(Method.POST, url, null, listener, errorListener);
        }

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            HashMap<String, String> params = new HashMap<String, String>();
            params.put("name", "value");
            return params;
        }

        @Override
        protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
            try {
                String jsonString =
                        new String(response.data, HttpHeaderParser.parseCharset(response.headers));
                return Response.success(new JSONArray(jsonString),
                        HttpHeaderParser.parseCacheHeaders(response));
            } catch (UnsupportedEncodingException e) {
                return Response.error(new ParseError(e));
            } catch (JSONException je) {
                return Response.error(new ParseError(je));
            }
        }
    }

after webcall

public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){

        for(int i = 0; i<array.length(); i++) {

            GetDataAdapterRiwayat GetDataAdapter2 = new GetDataAdapterRiwayat();

            JSONObject json = null;
            try {

                json = array.getJSONObject(i);

                GetDataAdapter2.setIdJalanRiwayat(json.getString(JSON_ID_JALAN));
                GetDataAdapter2.setNamaJalanRiwayat(json.getString(JSON_NAMA_JALAN));
                GetDataAdapter2.setLatitudeRiwayat(json.getString(JSON_LATITUDE));
                GetDataAdapter2.setLongitudeRiwayat(json.getString(JSON_LONGITUDE));
                GetDataAdapter2.setFotoSebelumRiwayat(json.getString(JSON_FOTO_SEBELUM));
                GetDataAdapter2.setFotoSetelahRiwayat(json.getString(JSON_FOTO_SETELAH));
                GetDataAdapter2.setIdRiwayat(json.getString(JSON_ID_RIWAYAT));

            } catch (JSONException e) {

                e.printStackTrace();
            }
            GetDataAdapter1.add(GetDataAdapter2);
        }

        recyclerViewadapterRiwayat = new RecyclerViewAdapterRiwayat(GetDataAdapter1, this);

        recyclerView.setAdapter(recyclerViewadapterRiwayat);
    }

Upvotes: 1

Views: 261

Answers (3)

Eggy
Eggy

Reputation: 551

just use GET if POST still not working

example

CustomJsonArrayRequest request = new CustomJsonArrayRequest (GET_JSON_DATA_HTTP_URL + "?&name=value",
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {

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

                    }
                });

and change in class CustomJsonArrayRequest

super(Method.POST, url, null, listener, errorListener);

with

super(Method.GET, url, null, listener, errorListener);

Upvotes: 1

Mahesh Babariya
Mahesh Babariya

Reputation: 4570

Try this way

public void JSON_DATA_WEB_CALL() {

    Map<String, Object> jsonParams = new HashMap<>();
    jsonParams.put("name", "value");

    JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, GET_JSON_DATA_HTTP_URL,

            new JSONObject(jsonParams),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                    Log.e("Res", response.toString());

                    // Do your stuff here

                    JSON_PARSE_DATA_AFTER_WEBCALL(response);


                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //   Handle Error
                }
            }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            headers.put("User-agent", System.getProperty("http.agent"));
            return headers;
        }
    };
    queue.add(postRequest);
}



public void JSON_PARSE_DATA_AFTER_WEBCALL(String response) {

    try {

        JSONArray jsonArray = new JSONArray(response);

        for (int i = 0; i < jsonArray.length(); i++) {

            GetDataAdapterRiwayat GetDataAdapter2 = new GetDataAdapterRiwayat();

            JSONObject json = null;

            try {

                json = jsonArray.getJSONObject(i);

                GetDataAdapter2.setIdJalanRiwayat(json.getString(JSON_ID_JALAN));
                GetDataAdapter2.setNamaJalanRiwayat(json.getString(JSON_NAMA_JALAN));
                GetDataAdapter2.setLatitudeRiwayat(json.getString(JSON_LATITUDE));
                GetDataAdapter2.setLongitudeRiwayat(json.getString(JSON_LONGITUDE));
                GetDataAdapter2.setFotoSebelumRiwayat(json.getString(JSON_FOTO_SEBELUM));
                GetDataAdapter2.setFotoSetelahRiwayat(json.getString(JSON_FOTO_SETELAH));
                GetDataAdapter2.setIdRiwayat(json.getString(JSON_ID_RIWAYAT));

            } catch (JSONException e) {

                e.printStackTrace();
            }
            GetDataAdapter1.add(GetDataAdapter2);
        }

        recyclerViewadapterRiwayat = new RecyclerViewAdapterRiwayat(GetDataAdapter1, this);

        recyclerView.setAdapter(recyclerViewadapterRiwayat);

    } catch (Exception ex) {
        ex.printStackTrace();
    }


}

Edited Answer

public void JSON_DATA_WEB_CALL() {

    String GET_JSON_DATA_HTTP_URL = "http://jalanrusak.16mb.com/AndroidFileUpload/GetDataRiwayat.php";

    Map<String, Object> jsonParams = new HashMap<>();
    jsonParams.put("name", "value");

    RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

    JsonArrayRequest postRequest= new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, new Response.Listener<JSONArray>() {

        @Override
        public void onResponse(JSONArray response) {

            Log.e("Res", response.toString());
            JSON_PARSE_DATA_AFTER_WEBCALL(response.toString());

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            //   Handle Error
            Log.e("Res", error.toString());
        }
    });

    queue.add(postRequest);
}

public void JSON_PARSE_DATA_AFTER_WEBCALL(String response) {

    try {

        JSONArray jsonArray = new JSONArray(response);

        for (int i = 0; i < jsonArray.length(); i++) {

            GetDataAdapterRiwayat GetDataAdapter2 = new GetDataAdapterRiwayat();

            JSONObject json = null;

            try {

                json = jsonArray.getJSONObject(i);

                GetDataAdapter2.setIdJalanRiwayat(json.getString(JSON_ID_JALAN));
                GetDataAdapter2.setNamaJalanRiwayat(json.getString(JSON_NAMA_JALAN));
                GetDataAdapter2.setLatitudeRiwayat(json.getString(JSON_LATITUDE));
                GetDataAdapter2.setLongitudeRiwayat(json.getString(JSON_LONGITUDE));
                GetDataAdapter2.setFotoSebelumRiwayat(json.getString(JSON_FOTO_SEBELUM));
                GetDataAdapter2.setFotoSetelahRiwayat(json.getString(JSON_FOTO_SETELAH));
                GetDataAdapter2.setIdRiwayat(json.getString(JSON_ID_RIWAYAT));

            } catch (JSONException e) {

                e.printStackTrace();
            }
            GetDataAdapter1.add(GetDataAdapter2);
        }

        recyclerViewadapterRiwayat = new RecyclerViewAdapterRiwayat(GetDataAdapter1, this);
        recyclerView.setAdapter(recyclerViewadapterRiwayat);

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

Upvotes: 0

Avinash kumawat
Avinash kumawat

Reputation: 75

use this:

public class BaseRequest extends Request<JSONArray> {
    private static final String TAG = BaseRequest.class.getSimpleName();
    private final Gson gson = new Gson();


    private final Response.Listener listener;

    public BaseRequest(String url, Response.Listener responseListener, Response.ErrorListener listener) {
        super(Request.Method.GET, url, listener);
        Log.e(TAG, "Requesting url : " + url);
        this.listener = responseListener;
    }
    public BaseRequest(int method, String url, Response.Listener responseListener, Response.ErrorListener listener) {
        super(method, url, listener);
        Log.e(TAG, "Requesting url : " + url);
        this.listener = responseListener;
    }

    @Override
    public Response<JSONArray> parseNetworkResponse(NetworkResponse response) {

        try {
            String json = null;
            json = new String(
                    response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            JSONArray result = new JSONArray(json);

           return Response.success(
                        result,
                        HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {

            return Response.error(new ParseError(e));

        } catch (JsonSyntaxException e) {

            return Response.error(new ParseError(e));
            e.pri

        } catch (JSONException e) {
            return Response.error(new ParseError(e));
        }


    }

    @Override
    protected VolleyError parseNetworkError(VolleyError volleyError) {
        return volleyError;
    }

    @Override
    protected void deliverResponse(JSONArray response) {
        listener.onResponse(response);
    }


}

and make request:

BaseRequest baseRequest = new BaseRequest(Request.Method.POST, url, new Response.Listener() {
            @Override
            public void onResponse(JSONArray response) {

                //Response as JsonArray
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Error : " + error.getMessage());

            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();

               //Your parameters
                return params;
            }
        };

queue.add(baseRequest);

Upvotes: 0

Related Questions