禁用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();
}
我知道禁用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();
}