我正在使用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();
}
});
答案 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);
}