Revathy
Revathy

Reputation: 97

Volley Offline Working

Ways to implement volley json response cache.I tried the following way to get response from volley.i get the response correctly.I dont know how to store these json values into volley cache

StringRequest strReq = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    System.out.println("mainresp$$$"+response);
                    Log.d("Volley Request Success", response.toString());
                    result=response;
                    callback.onSuccess(result);


                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d("volley request Error",
                    "Error: " + error.getMessage());

        }
    }) {

        @Override
        protected Map<String, String> getParams() {


            return params;
        }

    };

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

Upvotes: 2

Views: 3562

Answers (1)

BNK
BNK

Reputation: 24114

Together with my comments, you have already read my answer at the following question:

Android Setup Volley to use from Cache

I have just tested with POST request, as the following code:

        CacheRequest cacheRequest = new CacheRequest(Request.Method.POST, url, new Response.Listener<NetworkResponse>() {
            @Override
            public void onResponse(NetworkResponse response) {
                try {
                    final String jsonString = new String(response.data,
                            HttpHeaderParser.parseCharset(response.headers));
                    // Check if it is JSONObject or JSONArray
                    Object json = new JSONTokener(jsonString).nextValue();
                    JSONObject jsonObject = new JSONObject();
                    if (json instanceof JSONObject) {
                        jsonObject = (JSONObject) json;
                    } else if (json instanceof JSONArray) {
                        jsonObject.put("success", json);
                    } else {
                        String message = "{\"error\":\"Unknown Error\",\"code\":\"failed\"}";
                        jsonObject = new JSONObject(message);
                    }
                    textView.setText(jsonObject.toString(5));                        
                } catch (UnsupportedEncodingException | JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // do something...
            }
        });

My sample Asp.Net Web API code as the following:

        // POST api/<controller>
        public IHttpActionResult Post()
        {
            string jsonString = "[" +
                                     "{" +
                                         "name: \"Person 1\"," +
                                         "age: 30," +
                                         "type: \"POST\"," +
                                     "}," +
                                     "{" +
                                         "name: \"Person 2\"," +
                                         "age: 20," +
                                         "type: \"POST\"," +
                                     "}," +
                                     "{" +
                                         "name: \"Person 3\"," +
                                         "age: 40," +
                                         "type: \"POST\"," +
                                     "}" +
                                "]";            
            JArray jsonObj = JArray.Parse(jsonString);
            return Ok(jsonObj);
        }

Here is the result screenshot

result screenshot

Upvotes: 3

Related Questions