![](/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.