Я пытаюсь настроить кеш с Retrofit 1.9.0
и OkHtttp 2.5.0
.
Вот как я предоставляю OkHttpClient
для моего RestAdapter
:
@Provides
@Singleton
public OkHttpClient provideOkHttpClient() {
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
okHttpClient.setWriteTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
File cacheDir = new File(context.getCacheDir(), "http");
final Cache cache = new Cache(cacheDir, DISK_CACHE_SIZE_IN_BYTES);
okHttpClient.setCache(cache);
okHttpClient.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(request);
Response finalResponse = response.newBuilder()
.header("Cache-Control", String.format("public, max-stale=%d", 604800))
.build();
Log.d("OkHttp", finalResponse.toString());
Log.d("OkHttp Headers", finalResponse.headers().toString());
return finalResponse;
}
});
return okHttpClient;
}
Я не забыл setClient
на RestAdapter.Builder
. Также убедитесь, что я фактически использую экземпляр RestAdapter
с этим набором клиентов.
Даже проверено, созданы ли файлы в папке "http". Они.
Однако после того, как я вернусь к WIFI и перезагрузите свой экран, я заканчиваю в OnError
обратном вызове конечной точки Observable
с этим сообщением:
retrofit.RetrofitError: failed to connect to /10.40.31.12 (port 8888) after 10000ms: connect failed: ENETUNREACH (Network is unreachable)
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я должен, вероятно, упомянуть, что окончательный Observable
объединяется с 5 другими, с flatMap
и zip
в пути.