Какие заголовки использовать при использовании HttpResponseCache.get
Я пытаюсь использовать httpResponseCache для кэширования некоторых моих запросов. Проблема в том, что я хотел бы знать, кэшируется ли запрос перед тем, как сделать запрос.
В исходном коде HttpResponseCache я увидел, что есть метод get, который принимает (URI, requestMethod, Map
Был ли кто-нибудь успешным в использовании метода get, чтобы определить, кэшируется ли запрос перед выполнением запроса, или, альтернативно, есть ли другой способ проверить, кэшируется ли что-то перед выполнением запроса? Я понимаю, что могу использовать hitCount, чтобы выяснить, был ли ответ получен из кэша, и я могу использовать "Cache-Control","only-if-cached", чтобы вызвать кэшированный ответ. Я просто хотел бы иметь возможность проверить, кэшируется ли он.
Вот некоторый код, который я использовал, чтобы попытаться выполнить это. В onCreate of Activity я инициализирую кеш следующим образом:
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();
}
Извините / спасибо / Любая помощь очень ценится!
1 ответ
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
HttpResponseCache cache = HttpResponseCache.getInstalled();
cache.get(new URI(url.toString()), "GET", connection.getHeaderFields());
Вот как это должно быть сделано, но я еще не пробовал.