我试图通过OkHttp和Retrofit缓存响应。我知道有几个类似于我的问题,但没有一个能够解决我的问题。
以下是我的Interceptor负责修改标题。
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
。
答案 0 :(得分:2)
我认为这就是你要找的东西:
.header("Cache-Control", (UtilityMethods.isNetworkAvailable()) ?
"public, max-age=60" : "public, only-if-cached, max-stale=604800")
这为网络不可用时添加了only-if-cached
指令。这只接受响应,如果它在缓存中。