Android Volley访问缓存响应数据

时间:2014-03-26 06:15:43

标签: android android-volley

我正在使用Volley库来访问我的服务器数据.Volley具有内置的缓存功能。我尝试使用如下。这就是“CACHED RESPONSE”。但我不知道如何访问缓存的数据。

 void initHttpCall(){

    RequestQueue queue = Volley.newRequestQueue(mcontext);

    UOBRequest<RateData> myReq = new UOBRequest<RateData>(Method.GET,
                                            Constants.GET_RATES,
                                            RateData.class,
                                            mlistner,
                                            createMyReqErrorListener()){


                            @Override
                            public Map<String, String> getHeaders(){

                            HashMap<String, String> headers = new HashMap<String, String>();
                            headers.put("Authorization", getToken());
                            headers.put("Accept","application/json" );

                            return headers;

                            }



    };

    myReq.setShouldCache(true);
    if(queue.getCache().get(Constants.GET_RATES)!=null){

        System.out.println("CACHED RESPONSE");

        }else{

             queue.add(myReq);
        }


}

}

这是我的回复列表器,想要在这里获得RateData对象。

new Response.Listener<RateData>() {



    @Override
    public void onResponse(RateData rateData) {

        setupCurrencyPager(rateData);
        setLastUpdatedTime();

    }
});

2 个答案:

答案 0 :(得分:0)

你误解了Volley的缓存系统是如何工作的。它的美妙之处在于,作为Volley的用户,您并不知道响应来自何处。

当您向RequestQueue添加新请求时,Volley会检查该请求是否已有缓存响应。如果确实如此,并且该响应尚未到期,则会立即返回。否则,它会进入网络,检索响应,缓存它并将其返回给您。

您不需要上一个if语句,只需将其添加到队列中,Volley将负责其余的工作。

答案 1 :(得分:-1)

尝试以下code.it将帮助您确定。

请创建您要传递给服务器的请求。       JSONObject request = new JSONObject();            request.put( “用户”, “用户2”);

JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,url,request,new Response.Listener(){

    @Override
    public void onResponse(JSONObject response) {
        // TODO Auto-generated method stub
        Log.v("response:-"+response);
    }
}, new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
    }
});
queue.add(jsObjRequest);

}