【发布时间】:2016-09-23 03:26:16
【问题描述】:
我正在尝试通过 OkHttp 和 Retrofit 缓存响应。我知道有几个问题与我的类似,但没有一个能够解决我的问题。
以下是我负责修改标头的拦截器。
private static class CachingControlInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response originalResponse = chain.proceed(request);
return originalResponse.newBuilder()
.header("Cache-Control", (UtilityMethods.isNetworkAvailable()) ?
"public, max-age=60" : "public, max-stale=604800")
.build();
}
}
现在,这在第一种情况下完美运行 -
- 互联网连接可用。
- 收到并缓存了有效响应。
- 断开设备与互联网的连接。
- 在一分钟内发送与上一个相同的请求 -> 响应与上一个相同
- 接下来,一分钟后发送相同的请求 -> 无响应 (
UnknownHostException)
这使得第一部分 ("public, max-age=60") 完成。
但是,不知何故,"public, max-age=60" 部分根本不起作用。
这部分应该使 okhttp 能够在设备离线时获取一周前的陈旧数据,但我得到的是UnknownHostException。
【问题讨论】:
标签: android caching retrofit2 okhttp3