Saya tahu untuk menonaktifkan cache okhttp adalah dengan memanggil Request.cacheControl(CacheControl.FORCE_NETWORK). Apakah mungkin untuk mengatur cacheControl dari OkHttpClient.class? Karena saya memiliki 1 klien untuk semua permintaan saya. Jadi saya ingin menonaktifkan cache untuk semua permintaan dengan menonaktifkannya dari okhttpClient

9
zihadrizkyef 15 Maret 2017, 04:08

2 jawaban

Jawaban Terbaik

Gunakan ini untuk membuat Retrofit dan menyediakan cache karena null API tidak akan menyimpan apa pun di cache.

private OkHttpClient createOkHttpClient() {
    return new OkHttpClient.Builder()
            ...
            .cache(null)
            .build();
}
20
Roshana Pitigala 21 Februari 2020, 07:47

Tambahkan interseptor ke klien Anda, dan tambahkan header kontrol cache di interseptor. periksa kode contoh di bawah ini:

    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();
11
J.Zhang 15 Januari 2018, 10:17