禁用okhttp的缓存

Disable Cache of okhttp

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

禁用它来禁用所有请求的缓存

在您的客户端添加拦截器,并在下面的interceptor.check示例代码中添加缓存控制header:

    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();

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

private OkHttpClient createOkHttpClient() {
    return new OkHttpClient.Builder()
            ...
            .cache(null)
            .build();
}