【发布时间】:2015-12-13 00:44:42
【问题描述】:
我正在尝试使用Retrofit 1.9.0 和OkHtttp 2.5.0 配置缓存。
这是我为我的RestAdapter 提供OkHttpClient 的方式:
@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;
}
我没有忘记在RestAdapter.Builder 上setClient。还要确定,我实际上是在这个客户端集上使用RestAdapter 的实例。
甚至检查文件是否在“http”文件夹下创建。他们是。
但是,在我关闭 WIFI 并重新加载屏幕后,我最终会在 Observable 端点的 OnError 回调中显示此消息:
retrofit.RetrofitError: failed to connect to /10.40.31.12 (port 8888) after 10000ms: connect failed: ENETUNREACH (Network is unreachable)
免责声明:我可能应该提一下,最后一个 Observable 是由其他 5 个组合而成,flatMap 和 zip 还在路上。
【问题讨论】:
标签: android caching retrofit okhttp rx-android