首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >离线时是否可以使用缓存数据通过OKHttp进行改造

离线时是否可以使用缓存数据通过OKHttp进行改造
EN

Stack Overflow用户
提问于 2014-05-02 21:13:26
回答 7查看 93.4K关注 0票数 157

我正在尝试使用Retrofit & OKHttp来缓存HTTP响应。我关注了this gist,最后得到了下面的代码:

代码语言:javascript
复制
File httpCacheDirectory = new File(context.getCacheDir(), "responses");

HttpResponseCache httpResponseCache = null;
try {
     httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024 * 1024);
} catch (IOException e) {
     Log.e("Retrofit", "Could not create http cache", e);
}

OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(httpResponseCache);

api = new RestAdapter.Builder()
          .setEndpoint(API_URL)
          .setLogLevel(RestAdapter.LogLevel.FULL)
          .setClient(new OkClient(okHttpClient))
          .build()
          .create(MyApi.class);

这是带有缓存控制标头的MyApi

代码语言:javascript
复制
public interface MyApi {
   @Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=2419200")
   @GET("/api/v1/person/1/")
   void requestPerson(
           Callback<Person> callback
   );

首先,我在线请求并检查缓存文件。正确的JSON响应和标头都在那里。但是当我尝试离线请求时,我总是得到RetrofitError UnknownHostException。要使Retrofit从缓存中读取响应,我还需要做什么吗?

编辑:由于OKHttp 2.0.x HttpResponseCacheCachesetResponseCachesetCache

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23429046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档