【发布时间】:2016-08-18 13:08:33
【问题描述】:
我正在尝试使用 OkHttp 做 Android 离线缓存方法。流程是这样的:
- 我向服务器发送了一个 HTTP 请求,其中包含标题字段
if-none-catched的 ETag 空字符串,服务器返回一个正确的 ETag。 - 然后我存储 ETag 并缓存响应。
- 下次当我触发相同的服务调用时,我会得到相同的 ETag 并将其设置为 HTTP 请求标头,如果 ETag 相同,服务器将返回 HTTP 304。
我现在的问题是如何存储和检索 ETag? OkHttp 默认会处理还是我需要在 SQLite 中存储?我一直在谷歌上寻找 OkHttp 实现 ETag 示例代码,但我得到的只是普通的缓存方法。我参考的链接:
- I'm trying to use Java's HttpURLConnection to do a "conditional get", but I never get a 304 status code
- https://github.com/square/okhttp/wiki/Interceptors
- Correct way of setting up cache for OkHttp in Android
- https://gist.github.com/polbins/1c7f9303d2b7d169a3b1#file-restcontroller-java-L45
到目前为止,我实现的只是第一次服务调用的缓存,但不再从服务器获取最新数据。感谢有人可以提供一些指导或找到任何动态处理 ETag 和 if-none-catch 的好例子供 OkHttp 分享。如有任何澄清,请随时询问。
【问题讨论】:
标签: android okhttp etag if-none-match