Ответ 1
У меня проблема simlar в моей компании:)
Проблема была на стороне сервера. В ответе serwer у меня есть:
Pragma: no-cache
Поэтому, когда я удаляю это, все начинает работать. Прежде чем я удалю его, я получаю все такие исключения: 504 Unsatisfiable Request (only-if-cached)
Итак, как выглядит реализация на моей стороне.
OkHttpClient okHttpClient = new OkHttpClient();
File httpCacheDirectory = new File(appContext.getCacheDir(), "responses");
Cache cache = new Cache(httpCacheDirectory, maxSizeInBytes);
okHttpClient.setCache(cache);
OkClient okClient = new OkClient(okHttpClient);
RestAdapter.Builder builder = new RestAdapter.Builder();
builder.setEndpoint(endpoint);
builder.setClient(okClient);
Если у вас есть проблемы при тестировании на какой стороне проблема (сервер или приложение). Вы можете использовать такую функцию для установки заголовков, полученных с сервера.
private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control",
String.format("max-age=%d", 60))
.build();
}
};
и просто добавьте его:
okHttpClient.networkInterceptors().add(REWRITE_CACHE_CONTROL_INTERCEPTOR);
Благодаря этому, как вы можете видеть, мне удалось удалить заголовок Pragma: no-cache
для тестового времени.
Также я предлагаю вам прочитать заголовок Cache-Control
:
Другие полезные ссылки: