![](/img/trans.png)
[英]Android Volley Caching - Get Response by URL and Request Body
[英]Android Volley access caching response data
我正在使用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();
}
});
您误解了Volley的缓存系统的工作方式。 它的优点在于,作为Volley的用户,您不知道响应来自何处。
当您将新请求添加到RequestQueue
,Volley将检查该请求是否已经具有缓存的响应。 如果是这样,并且该响应尚未过期,则会立即返回。 否则,它将进入网络之外,检索响应,将其缓存并返回给您。
您不需要最后一个if
语句,只需将其添加到队列中,Volley就会处理其余的事情。
尝试以下代码。它将帮助您确定。
请创建您要传递到服务器的请求。 JSONObject request = new JSONObject(); request.put(“ user”,“ user2”);
JsonObjectRequest jsObjRequest =新的JsonObjectRequest(Request.Method.POST,URL,请求,新的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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.