我正在使用okhttp和Registfit调用REST服务。从服务返回数据存储在我的Android应用程序中的sqlite数据库中。
要知道您是否得到了304 as响应,可以在onResponse回调中捕获它,如下所示:
if (response.raw().networkResponse().code() == 304){
// Do what you want to do
}
至少,这是当您使用Registfit2和okHttp 3时。不确定早期版本,但我想它会是一样的?在响应中设置断点时,您总是可以尝试找到304响应。
11.6. 处理 Last-Modified 和 ETag 既然你知道如何在你的 web 服务请求中添加自定义的 HTTP 头信息, 接下来看看添加 Last-Modified 和 ETag 头信息的支持。 下面的这些例子将以调试标记置为关闭的状态来显示输出结果。 如果你还停留在上一部分的开启状态, 可以使用 httplib.HTTPConnection.debuglevel = 0 将其设置为关
我还没有完全理解.NETMVC的HTTP缓存是如何工作的,因为它看起来并不像是在实际检索缓存的资源文件。我想我需要在某处添加一些额外的代码。。。 首先,让我们看看我是如何在静态内容(即图像)上设置HTTP缓存的。在我的网络中。config,我有以下内容: 这会导致我的应用程序中的图像看起来缓存正确。当我查看图像的响应标头时,我看到以下内容(删除了不必要的标头): 我看到一个很好的ETag值,我的过
Last-Modified响应HTTP报头包含在其原始服务器认为该资源的最后修改日期和时间。它被用作验证器来确定接收或存储的资源是否相同。不如ETag标题准确,它是一种回退机制。包含条件请求If-Modified-Since或If-Unmodified-Since标题使用此字段。 Header type Response header Forbidden header name no CORS-s
控制器能处理带有'Cache-Control'、'ETag'及/或'If-Modified-Since'头的请求,如果服务端在响应中设置了'Cache-Control'响应头,那么我们推荐在控制器内对这些请求头进行处理。这涉及一些工作:计算最后更改时间long和/或请求的ETag值、与请求头的'If-Modified-Since'值做比较,并且在资源未更改的情况下在响应中返回一个304(资源未更改
扫描仪sc=新扫描仪(系统输入);字符串A=sc.nextLine();
我有一个简单的用例,服务器为请求返回Etag,并将该Etag作为标头(即)添加到所有后续url请求。如果响应中有变化,服务器可以用响应,否则可以用响应。对于后者,重用缓存中的响应是有意义的。但是okhttp总是返回作为缓存响应。 我做了一些故障排除,okhttp在内部将响应写入磁盘,但是不会将其返回到。仔细研究类,有一些文档明确说明不会使用缓存: 编辑-更正,Okhttp正确地添加了etag标头。