使用android -volley获取缓存字符串响应的方法是什么?

时间:2014-01-20 09:14:49

标签: android caching android-volley

1)我正在使用方法

缓存来自服务器的字符串网络响应
request.setShouldCache(true);

2)我正在尝试使用

访问缓存的数据
System.out.println("the cached data"+new String(request.getCacheEntry().data));

抛出空指针异常。 3)我在HTTPHeaderparser.java中打印了一个输出语句。数据打印得当。

System.out.println("the data value is"+new String(entry.data) );

4)所以我猜我在获取缓存数据时犯了一些错误。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

请求中的缓存条目在您运行请求之前未填充,因此您应该直接调用缓存来测试它是否包含带

的值
mQueue.getCache().get(request.getCacheKey()) 
如果你想要做的是从缓存中获取一个值而不发出网络请求,那么bogdan就会把评论放进去。

此方法很快,您可以从UI线程调用。它将返回缓存条目(如果可用),即使它已过期,但您可以调用isExpired()方法来了解响应是否已过时。

即使过时也会返回数据,因为您可以选择在后台刷新数据时显示它。

答案 1 :(得分:0)

查看班级parseCacheHeaders(NetworkResponse)中的方法HttpHeaderParser。缓存响应有一些条件,因此如果服务器提供一些标头,库只会缓存响应。如果要覆盖它,则必须覆盖parseNetworkResponse(NetworkResponse)类中的方法Request,并调用另一种方法从服务器解析缓存头。
更新
似乎我误解了这个问题,为了访问Volley缓存,假设你的RequestQueue实例是mQueue,你可以做mQueue.getCache()。get(request.getCacheKey())。