2016-04-12 12 views
1

私は、Webサービスからそのすべてのデータを取得したアンドロイドアプリを作成しています。 そして、ネットワーク層としてOkhttpを使用しています。私はokhttpのキャッシュサイズを設定することができますが、okhttpがサーバーからデータをフェッチしてから、それをローカルのキャッシュからフェッチした後、無効な時間を設定します。OkHttp Androidの古くなった時間を設定するには?

私はいつでもアプリを押して終了します。再起動後、再びサーバーからデータを取得します。 15分のような陳腐化した時間のためにローカルキャッシュからデータを得ることは可能ですか? 15分後にユーザーがアプリを再起動すると、データはサーバーから送信されます。

答えて

2

ご質問の回答にCache-Control: max-age= 900をお試しください。この方法で、OkHttpに15分(900秒)の応答をキャッシュするように指示します。

詳しくはhereをご覧ください。

デバイス側でプログラムで実行する場合は、は、インターセプタを使用して応答を書き直すことができます。このようにそれを使用します。それを構築しながら、

private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() { 
@Override public Response intercept(Interceptor.Chain chain) throws IOException { 
    Response originalResponse = chain.proceed(chain.request()); 
    return originalResponse.newBuilder() 
     .header("Cache-Control", "max-age=900") 
     .build(); 
    } 
}; 

あなたOkHttpクライアントにこれを追加:あなたが行ってもいいです

OkHttpClient client = new OkHttpClient.Builder() 
    .addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR) 
    .build(); 

+0

どのようにプログラムで行うのですか?それを行うためにcom.squareup.okhttp.Responseクラスで利用可能なメソッドがありますか、それとも他の方法がありますか? – Passiondroid

+0

@パッシオンドロイド、私の更新答えをチェックしてください。 –

+0

情報をお寄せいただきありがとうございます。問題は、OkHttp 2.7.0を使用しており、インターセプタを追加する方法を見つけることができません。 – Passiondroid

関連する問題