【问题标题】:caching json response using volley使用 volley 缓存 json 响应
【发布时间】:2015-02-21 10:20:25
【问题描述】:

我使用 volley 框架从服务器检索 json 响应,但每次它从服务器加载 json。我如何缓存这个 json 响应以便离线使用它并与新响应同步。以下是我从服务器检索 json 响应的代码

          // Creating volley request obj
        JsonArrayRequest Req = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {    
                                JSONObject obj = response.getJSONObject(i);
                                MainPojo test = new MainPojo();
                                String name = obj.getString("facility_name");                                 
                                test.setName(name);                                
                                //test.setUrl(obj.getString("easyurl"));                                   
                                testList.add(test);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }    
                        }    
                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        mAdapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());                    

                    }
                })
                {            
            //**
             // Passing some request headers
              //*
             @Override
             public Map<String, String> getHeaders() throws AuthFailureError {
                 HashMap<String, String> headers = new HashMap<String, String>();
                 headers.put("Cookie", MainActivity.sharedpreferences.getString(savedCookie, ""));                
                 headers.put("Set-Cookie", MainActivity.sharedpreferences.getString(savedCookie, ""));
                 headers.put("Content-Type", "application/x-www-form-urlencoded");                
                 //headers.put("Content-Type","application/json");
                 headers.put("Accept", "application/x-www-form-urlencoded");                
                 return headers;
             } 
         };  
        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(Req);
    }

请告诉我应该如何缓存 json 响应

【问题讨论】:

  • 我认为我的解决方案不好,因为它可能会阻止 volley 在需要时更新,试试看它是否会自行更新,您可以添加 header 以查看 volley 何时需要更新
  • 标头已经添加,唯一的问题是缓存响应并仅在服务器有更新时同步

标签: json caching android-volley


【解决方案1】:

也许我遗漏了什么,但请尝试使用共享首选项

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多