如何为OkHttp Android设置过时时间?

时间:2016-04-12 17:05:53

标签: android okhttp

我正在创建一个Android应用程序,它从Web服务中获取所有数据。 我使用Okhttp作为网络层。我可以设置okhttp的缓存大小,但我想设置过时的时间,然后okhttp从服务器获取数据,否则从本地缓存中获取数据。

每当我按下并退出应用程序时。重新启动后,它再次从服务器获取数据。是否可以将本地缓存中的数据用于过时15分钟? 15分钟结束后,用户再次启动应用程序,然后数据来自服务器。

1 个答案:

答案 0 :(得分:2)

您可以尝试在请求的回复中使用Cache-Control: max-age= 900。这样您就可以告诉OkHttp将响应缓存15分钟(900秒)。

您可以详细了解here

如果您想在设备端以编程方式执行此操作,则可以使用拦截器重写响应。像这样使用它:

private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
@Override public Response intercept(Interceptor.Chain chain) throws IOException {
    Response originalResponse = chain.proceed(chain.request());
    return originalResponse.newBuilder()
       .header("Cache-Control", "max-age=900")
       .build();
     }
};

在构建它时将其添加到OkHttp客户端:

OkHttpClient client = new OkHttpClient.Builder()
   .addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
   .build();

你很高兴!