禁用okhttp的缓存

zih*_*yef 6 android caching okhttp okhttp3

我知道禁用okhttp的缓存就是调用Request.cacheControl(CacheControl.FORCE_NETWORK).是否可以从OkHttpClient.class设置cacheControl?因为我的所有请求都有1个客户端.所以我想通过从okhttpClient禁用它来禁用所有请求的缓存

Avi*_*Avi 14

使用它来构建Retrofit并将缓存提供为null,Api不会缓存任何内容

private OkHttpClient createOkHttpClient(boolean canCache) {
    return new OkHttpClient.Builder()
            .readTimeout(60, TimeUnit.SECONDS)
            .connectTimeout(60 / 2, TimeUnit.SECONDS)
            .writeTimeout(60, TimeUnit.SECONDS)
            .cache(canCache ? mCache : null)
            .build();
}
Run Code Online (Sandbox Code Playgroud)


小智 7

将拦截器添加到您的客户端,并在拦截器中添加缓存控制标头。请检查以下示例代码:

    Interceptor interceptor = new Interceptor() {
        @Override public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            Request.Builder builder = request.newBuilder().addHeader("Cache-Control", "no-cache");
            request = builder.build();
            return chain.proceed(request);
        }
    };

    OkHttpClient mClient = new OkHttpClient.Builder()
            .addInterceptor(interceptor)
            .build();
Run Code Online (Sandbox Code Playgroud)