0
私はOkHttpとRetrofitで応答をキャッシュしようとしています。私は似たようないくつかの質問があることを理解していますが、私の問題に対処できる人はいません。Retrofit 2とOkHttp 3でのオフライン応答キャッシュ
以下は、私のインターセプターがヘッダーを修正する責任を負うものです。
private static class CachingControlInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response originalResponse = chain.proceed(request);
return originalResponse.newBuilder()
.header("Cache-Control", (UtilityMethods.isNetworkAvailable()) ?
"public, max-age=60" : "public, max-stale=604800")
.build();
}
}
さて、これは最初のケースで完璧に動作します -
- インターネット接続が利用可能です。
- 有効な応答が受信されてキャッシュされます。
- デバイスをインターネットから切断します。
- 分内に前回と同じ要求を送信する - >応答が最後
- 次に、分が完了した後に同じ要求を送信すると同じです - >応答がありません(
UnknownHostException
)
これは作ります最初の部分("public, max-age=60"
)が完成しました。
しかし、どういうわけか、"public, max-age=60"
部分はまったく動作しません。
この部分は、デバイスがオフラインのときにokhttpが1週間前の古いデータをフェッチできるようにする必要がありますが、代わりにUnknownHostException
と表示されます。