2016-10-11 50 views
6

Próbuję ustawić pamięć podręczną dla funkcji Retrofit, aby nie musiała ona stale pobierać danych. Śledziłem this SO, ponieważ wydaje mi się, że jest we właściwym kierunku, czego potrzebuję.OkHttpClient nie może rozwiązać metody setCache

I mają następujące (która jest identyczna z tzw)

OkHttpClient client = new OkHttpClient(); 
client.networkInterceptors().add(REWRITE_CACHE_CONTROL_INTERCEPTOR); 
File httpCacheDirectory = new File(getCacheDir(), "responses"); 
int cacheSize = 10*1024*1024; 
Cache cache = new Cache(httpCacheDirectory, cacheSize); 
client.setCache(cache); 

Jednakże client.setCache(cache) zwraca błąd cannot resolve method setCache.

Co ja tu robię źle? Mam retrofit 2.1.0 i okhttp3 3.4.1

Odpowiedz

12

W 3.x kilka metod na OkHttpClient zostało przeniesionych do metod na OkHttpClient.Builder. Chcesz coś takiego:

File httpCacheDirectory = new File(getCacheDir(), "responses"); 
int cacheSize = 10*1024*1024; 
Cache cache = new Cache(httpCacheDirectory, cacheSize); 

OkHttpClient client = new OkHttpClient.Builder() 
    .addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR) 
    .cache(cache) 
    .build(); 
+0

Otrzymuję błąd nie może rozwiązać symbol 'REWRITE_CACHE_CONTROL_INTERCEPTOR' –