gpt4 book ai didi

android - 如何在 Android 上的 DefaultHttpClient 中检查缓存

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:20 26 4
gpt4 key购买 nike

我的 Android 应用程序需要缓存来自使用 DefaultHttpClient 的 Web 服务调用的响应文本。缓存应该在 Http 响应 header 中设置的到期时间之前有效。

我发现了类似的问题,但他们提示 DefaultHttpClient 正在缓存他们的响应。有趣的是我需要它但无法工作。或者有建议的解决方案是基于文件的。
Does Android keeps the images downloaded from HTTP in cache?
how to do image caching in android

我编写了一个示例应用程序,它在单击按钮时请求 url 并打印响应状态和 header 。

DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response;
response = client.execute(request);
System.out.println("Response status - " + response.getStatusLine().getStatusCode());

我的 GAE servlet 代码是,

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/plain");
resp.setHeader("Expires", "Wed, 11 Jul 2012 12:00:00 GMT");
resp.setHeader("Cache-Control", "max-age=2592000");
resp.getWriter().println("Hi!");
}

每次单击按钮都会给我状态代码 200。我希望这应该只是第一次出现这种情况。

Response status - 200
***** Response Headers *****
Content-Type - text/plain; charset=iso-8859-1
Expires - Wed, 11 Jul 2012 12:00:00 GMT
Cache-Control - max-age=2592000
Date - Wed, 13 Jul 2011 06:54:57 GMT
Server - Google Frontend
Transfer-Encoding - chunked

我编辑了 servlet 并发布了;客户端读取最新的更改。我在 Chrome 浏览器上测试了 servlet 应用程序,缓存工作正常。

我在请求头中添加了Cache-control属性,但没有得到预期的结果。

如何确保 DefaultHttpClient 缓存响应内容并且在过期时间之前不会再次向服务器发送请求?

最佳答案

CachingHttpClient可能是您正在寻找的,它只是 DefaultHttpClient 的装饰器。

请注意,android 仅包含 HttpClient 4.0,为了使示例代码在 android 中运行,您需要将依赖项添加到您的项目中 HttpClient 4.1 和 HttpClient Cache 4.1。

关于android - 如何在 Android 上的 DefaultHttpClient 中检查缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com