okhttpのキャッシュを無効にすることは、Request.cacheControl(CacheControl.FORCE_NETWORK)
を呼び出すことです。 OkHttpClient.classからcacheControlを設定することは可能ですか?私はすべての要求に対して1つのクライアントを持っているからです。だから私はokhttpClientからそれを無効にすることによってすべてのリクエストのキャッシュを無効にしたい
これを使用してRetrofitを構築し、null
APIが何もキャッシュしないためキャッシュを提供します。
private OkHttpClient createOkHttpClient() {
return new OkHttpClient.Builder()
...
.cache(null)
.build();
}
クライアントにインターセプターを追加し、インターセプターにキャッシュ制御ヘッダーを追加します。以下のサンプルコードを確認してください。
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();