android - 使用 HttpResponseCache.get 时要使用的 header

标签 android caching httpresponsecache

我正在尝试使用 httpResponseCache缓存我的一些请求。问题是,我想知道在发出请求之前是否缓存了请求。

我在源代码中看到了 HttpResponseCache有一个 get 方法接受 (URI, requestMethod, Map< String, List< String >>) 并返回一个 cachedResponse。我尝试了几组不同的(URI、“GET”、标题),但我似乎无法弄清楚标题是什么,每次我使用 get 请求 cachedResponse 时,我都会返回 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();
            }

抱歉/谢谢/非常感谢任何帮助!

最佳答案

HttpURLConnection connection = (HttpURLConnection)url.openConnection();
HttpResponseCache cache = HttpResponseCache.getInstalled();
cache.get(new URI(url.toString()), "GET", connection.getHeaderFields());

应该是这样的,不过我还没试过。

关于android - 使用 HttpResponseCache.get 时要使用的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241575/

相关文章:

android - 无法使用telnet localhost 5554连接安卓模拟器

java - 使用指针 parse.com 从两个类获取相同 objectid 的数据

android - 需要一个 Android 中的 HttpResponseCache 的例子

android - com.squareup.okhttp.HttpResponseCache无法解析符号 'HttpResponseCache'

c# - openGL ES 支持语言和可移植性建议

android - 在 Android 上构建 libloc_api

android - 使用 picasso 或通用图像加载器而不是缓存将图像存储在手机内存中

Android HttpResponseCache 不工作 - FileNotFoundException

javascript - <音频> 和 javascript : can I force audio files to be redownloaded each time they're used?

Angular Service Worker SwUpdate.available 未触发