Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OkHttpClient cannot resolve method setCache

I'm trying to set a cache for Retrofit so that it does not have to retrieve the data constantly. I followed this SO as it appears to be in the right direction of what I need.

I have the following (which is identical from the SO)

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

However, client.setCache(cache) returns an error cannot resolve method setCache.

What am I doing wrong here? I have retrofit 2.1.0 and okhttp3 3.4.1

like image 376
user3277633 Avatar asked Oct 11 '16 23:10

user3277633


1 Answers

In 3.x a bunch of methods on OkHttpClient were moved into methods on OkHttpClient.Builder. You want something like this:

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();
like image 150
Jesse Wilson Avatar answered Oct 25 '22 04:10

Jesse Wilson