在 Android 中处理 Http 304 响应

Posted

技术标签:

【中文标题】在 Android 中处理 Http 304 响应【英文标题】:Handling Http 304 Response In Android 【发布时间】:2015-05-19 22:57:24 【问题描述】:

我使用HttpURLConnection 与服务器通信并使用HttpResponseCache 进行缓存,当服务器以304 (HTTP_NOT_MODIFIED) 响应时,我得到了空的正文,但根据 HttpURLConnection 和 HttpResponseCache 的文档,以防 304 HttpUrlConnection将在缓存中获取相同 URL 的响应。虽然对 url 的请求被缓存并且我确认了它。当第一次调用 url 时我得到正确的响应(数据),而当我调用 url 时缓存后,为什么我得到空的正文(没有数据)。

【问题讨论】:

你是在实例化这个HttpResponseCache吗?还是使用默认值? 我在应用程序开始时创建缓存参考是这个链接developer.android.com/reference/android/net/http/… 我可以看看你正在做的第二个请求吗? @kashif181 我们也遇到了同样的问题。你是怎么解决这个问题的?你能帮帮我吗? 【参考方案1】:

我通过从官方谷歌代码库下载 volley 库解决了这个问题,这是链接 https://android.googlesource.com/platform/frameworks/volley/+/master.

实际上 github 上的 volley 源代码是定制的,会导致很多问题(github 链接:https://github.com/mcxiaoke/android-volley),千万不要从该链接下载。

【讨论】:

以上是关于在 Android 中处理 Http 304 响应的主要内容,如果未能解决你的问题,请参考以下文章

[译]理解HTTP/304响应

HTTP状态码之200和304

http 304 响应与缓存控制相结合似乎不适用于 max-age

总结http状态码和200,304状态码

Angularjs应用程序在从firebase托管服务器检索html模板时不处理304响应

http响应