我正在尝试使用httpResponseCache来缓存我的一些请求。问题是,我想知道请求是否在发出请求之前被缓存。
我在HttpResponseCache的源代码中看到,有一个 get 方法接收(URI、requestMethod、Map<String、List<String >>)并返回一个缓存响应。我尝试了几组不同的(URI,“GET”,标头),但我似乎无法弄清楚标头是什么,并且每次我使用 get 请求缓存响应时,我都会返回 null,甚至尽管缓存了响应。
有没有人成功地使用 get 方法来确定在发出请求之前是否缓存了请求/或者是否有不同的方法来检查在发出请求之前是否缓存了某些东西?我知道我可以使用 hitCount 来确定响应是否来自缓存,并且我可以使用“Cache-Control”、“only-if-cached”来强制缓存响应。我只想能够检查它是否被缓存。
这是我用来尝试完成此操作的一些代码。在 Activity 的 onCreate 中,我确实以这种方式初始化缓存:
try {
File httpCacheDir = new File(this.getCacheDir(), "http");
long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
Class.forName("android.net.http.HttpResponseCache")
.getMethod("install", File.class, long.class)
.invoke(null, httpCacheDir, httpCacheSize);
}
catch (Exception httpResponseCacheNotAvailable) {
Log.d(TAG,"HttpResponseCache not available.");
}
然后尝试以这种方式使用它:
HttpResponseCache cache = HttpResponseCache.getInstalled();
try {
HashMap map = new HashMap<String, List<String>>();
CacheResponse response = cache.get(URI.create(base_url), "GET", map);
//response is always null
Log.d(TAG," Response is!:"+response);
} catch (IOException e) {
e.printStackTrace();
}
对不起/谢谢/任何帮助都非常感谢!