3

私はレトロフィット1.8.0、okhttp 2.1.0、およびokhttp-urlconnection 2.1.0を使用しています。サーバーから取得した応答をキャッシュし、インターネット接続がないときにそれらを使用したいのですが、これが私のコードです:

RequestInterceptor requestInterceptor = new RequestInterceptor() {

    @Override
    public void intercept(RequestFacade request) {

        request.addHeader("Accept", "application/json");
        if (Utils.isNetworkAvailable(HancoApplication.this)) {

            int maxAge = 60; // read from cache for 1 minute
            request.addHeader("Cache-Control", "public, max-age=" + maxAge);
        } else {

            int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
            request.addHeader("Cache-Control","public, only-if-cached, max-stale=" + maxStale);
        }
    }
};
OkHttpClient okHttpClient = new OkHttpClient();
File cacheDir = new File(getCacheDir(), "responseCache");
Cache cache = null;
try {

    cache = new Cache(cacheDir, 1024 * 1024 * 12);
    okHttpClient.setCache(cache);
} catch (IOException e) {

    e.printStackTrace();
}
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(Const.API_URL).setClient(new OkClient(okHttpClient)).setRequestInterceptor(requestInterceptor).build();
mWebApi = restAdapter.create(WebApi.class);

電話でインターネットなしで同じリクエストを実行すると、これが返されます: HTTP/1.1 504 Unsatisfiable Request (only-if-cached) OkHttp-Response-Source: NONE

コードの何が問題なのかわかりません。インターネット上のすべてのリソースが同じコードを使用しています!

4

0 に答える 0