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)所以我猜我在获取缓存数据时犯了一些错误。
有人可以帮助我吗?
答案 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())。