繁体   English   中英

Android Volley访问缓存响应数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM