Android OkHttp如何处理ETag

clo*_*oud 8 etag android okhttp if-none-match

我尝试使用OkHttp进行Android离线缓存方法.流程是这样的:

  1. 我在头字段if-none-catched向服务器发送一个带有ETag空字符串的HTTP请求,服务器返回一个正确的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分享的好例子.任何澄清都可以随意询问.

Jes*_*son 11

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