Я хочу переделать, когда OkHttp использует кеш, когда нет Интернета.
Я готовлю OkHttpClient следующим образом:
RestAdapter.Builder builder= new RestAdapter.Builder()
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("Accept", "application/json;versions=1");
if (MyApplicationUtils.isNetworkAvaliable(context)) {
int maxAge = 60; // read from cache for 1 minute
request.addHeader("Cache-Control", "public, max-age=" + maxAge);
} else {
int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
request.addHeader("Cache-Control",
"public, only-if-cached, max-stale=" + maxStale);
}
}
});
и установите кеш следующим образом:
Cache cache = null;
try {
cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
} catch (IOException e) {
Log.e("OKHttp", "Could not create http cache", e);
}
OkHttpClient okHttpClient = new OkHttpClient();
if (cache != null) {
okHttpClient.setCache(cache);
}
и я проверил на корневом устройстве, что в каталоге кэша сохраняются файлы с заголовками ответов и Gzip.
Но я не получаю правильный ответ от кэша дооснащения в автономном режиме, хотя в GZip файле закодирован мой правильный ответ. Итак, как я могу сделать, что Retrofit может читать GZip файл и как он может узнать, какой файл он должен быть (потому что у меня есть несколько файлов с другими ответами)?