10

我正在尝试使用 OkHttp 做 Android 离线缓存方法。流程是这样的:

  1. 我在标头字段中向服务器发送一个带有 ETag 空字符串的 HTTP 请求,if-none-catched服务器返回一个正确的 ETag。
  2. 然后我存储 ETag 并缓存响应。
  3. 下次当我触发相同的服务调用时,我会得到相同的 ETag 并将其设置为 HTTP 请求标头,如果 ETag 相同,服务器将返回 HTTP 304。

我现在的问题是如何存储和检索 ETag?OkHttp 默认会处理还是我需要在 SQLite 中存储?我一直在谷歌上寻找 OkHttp 实现 ETag 示例代码,但我得到的只是普通的缓存方法。我参考的链接:

  1. 我正在尝试使用 Java 的 HttpURLConnection 进行“条件获取”,但我从未得到 304 状态码
  2. https://github.com/square/okhttp/wiki/Interceptors
  3. 在Android中为OkHttp设置缓存的正确方法
  4. https://gist.github.com/polbins/1c7f9303d2b7d169a3b1#file-restcontroller-java-L45

到目前为止,我实现的只是第一次服务调用的缓存,但不再从服务器获取最新数据。欣赏是否有人可以提供一些指导或找到任何处理 ETag 和if-none-catch动态供 OkHttp 分享的好例子。任何澄清随时问。

4

1 回答 1

11

你只需要启用 OkHttp 的响应缓存。如果您的网络服务器返回一个,它将使用 ETag。

于 2016-04-26T01:23:04.660 回答