public static final Interceptor REWRITE_RESPONSE_INTERCEPTOR = new Interceptor() { @Override public okhttp3.Response intercept(Chain chain) throws IOException { okhttp3.Response originalResponse = chain.proceed(chain.request()); String cacheControl = originalResponse.header("Cache-Control"); if (cacheControl == null || cacheControl.contains("no-store") || cacheControl.contains("no-cache") || cacheControl.contains("must-revalidate") || cacheControl.contains("max-age=0")) { int max_age=60*5; return originalResponse.newBuilder() .removeHeader("Pragma") .header("Cache-Control", "public, max-age=" + max_age) .build(); } else { return originalResponse; } } }; public static Interceptor REWRITE_RESPONSE_INTERCEPTOR_OFFLINE = new Interceptor() { @Override public okhttp3.Response intercept(Chain chain) throws IOException { Request request = chain.request(); if (!NetworkUtils.isConnected()) { // int maxStale = 60 * 60 * 24 * 28; // request = request.newBuilder() // .removeHeader("Pragma") // .header("Cache-Control", "public, only-if-cached,max-stale=" + maxStale) // .build(); request = request.newBuilder() .removeHeader("Pragma") .cacheControl(CacheControl.FORCE_CACHE) .build(); } return chain.proceed(request); } };
okhttp配置缓存拦截器
最新推荐文章于 2022-06-24 23:06:32 发布
本文介绍两个OkHttp拦截器的实现方式:REWRITE_RESPONSE_INTERCEPTOR用于在线情况下修改响应缓存控制策略;REWRITE_RESPONSE_INTERCEPTOR_OFFLINE用于离线情况下强制使用缓存。
1588

被折叠的 条评论
为什么被折叠?



