OkHttp添加ETag和If-None-Match

时间:2015-01-03 04:11:49

标签: java android okhttp

在Android上使用retrofit和okhttp,如何使用http缓存ETag? 我只添加了

 File cacheDirectory = new   File(ctx.getApplicationContext().getCacheDir().getAbsolutePath(), "HttpCache");

    OkHttpClient ok = new OkHttpClient();
    try {
        Cache cache = new Cache(cacheDirectory, CACHE_SIZE);
        ok.setCache(cache);
    } catch (IOException e) {
        LogUtils.e(LOG_TAG, e);
    }

    ok.setConnectTimeout(TIMEOUT_MILLISEC, TimeUnit.MILLISECONDS);
    RestAdapter.Builder builder = new RestAdapter.Builder().setEndpoint(API_ROOT)
            .setErrorHandler(new APIErrorHandler()).setRequestInterceptor(mRequestInterceptor).setClient(new OkClient(ok));

2 个答案:

答案 0 :(得分:0)

Here's a gist演示了Retrofit + OkHttp。如果您的服务器在响应中返回ETag标头,则OkHttp将在条件GET上验证该标头时包含If-None-Match

答案 1 :(得分:0)

也许你已经添加了一个自定义的intecepter //.addNetworkInterceptor(new CacheInterceptor()) //.addInterceptor(new CacheInterceptor())

会影响okhttp默认的eTag操作