Я пытаюсь использовать httpResponseCache для кэширования некоторых моих запросов. Проблема в том, что я хотел бы знать, был ли запрос кэширован перед выполнением запроса.Какие заголовки использовать при использовании HttpResponseCache.get
я видел в источнике для HttpResponseCache, что есть способ получить, что принимает (URI, requestMethod, Карта < строкового Список < String>>) и возвращает cachedResponse. Я пробовал пару разных наборов (URI, «GET», Headers), но я не могу понять, что такое заголовки, и каждый раз, когда я запрашиваю cachedResponse с помощью get, я возвращаюсь в нуль, даже хотя есть ответ, кэшированный.
Неужели кому-то удалось использовать метод get, чтобы определить, кэшируется ли запрос перед тем, как сделать запрос/в качестве альтернативы, есть ли другой способ проверить, что что-то кэшировано перед тем, как сделать запрос? Я понимаю, что я могу использовать hitCount, чтобы выяснить, был ли ответ получен из кеша, и я могу использовать «Cache-Control», «only-if-cached», чтобы заставить кешированный ответ. Я просто хотел бы проверить, если он кэширован.
Вот код, который я использовал, чтобы попытаться выполнить это. В 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();
}
К сожалению/спасибо/Любая помощь очень ценится!
My ** cache.get ** всегда возвращает null здесь. Вы нашли решение? –