Android OkHttp如何处理ETag

Android OkHttp how to handle ETag

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

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

我现在的问题是如何存储和检索 ETag? OkHttp 默认会处理还是我需要存储在 SQLite 上?我一直在寻找 Google 关于 OkHttp 实现 ETag 示例代码的信息,但我得到的只是普通的缓存方法。 Link 我指的是:

  1. https://github.com/square/okhttp/wiki/Interceptors
  2. https://gist.github.com/polbins/1c7f9303d2b7d169a3b1#file-restcontroller-java-L45

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

你只需要enable OkHttp’s response cache。如果您的网络服务器 returns 一个,它将使用 ETag。