I use retrofit and okhttp in one of our applications.
I can\'t really find a good explanation for the default behaviour of Retrofit.
If Okhttp is on the cl
DEPRECATED for OkHttpClient v2.0.0 and higher
As Jesse Wilson pointed out you need to create your own cache.
The following code should create a 10MB cache.
File httpCacheDirectory = new File(application.getApplicationContext()
.getCacheDir().getAbsolutePath(), "HttpCache");
HttpResponseCache httpResponseCache = null;
try {
httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024);
} catch (IOException e) {
Log.e(getClass().getSimpleName(), "Could not create http cache", e);
}
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(httpResponseCache);
builder.setClient(new OkClient(okHttpClient));
The code is based on Jesse Wilsons example on Github.
You should manually create your OkHttpClient and configure it how you like. In this case you should install a cache. Once you have that create an OkClient and pass it to Retrofit's RestAdapter.Builder
Also, no caching for HTTP POST requests. GETs will be cached, however.
Correct implementation for OkHttpClient v2:
int cacheSize = 10 * 1024 * 1024; // 10 MiB
File cacheDir = new File(context.getCacheDir(), "HttpCache");
Cache cache = new Cache(cacheDir, cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
see documentation