Retrofitユーザー、 Retrofitでキャッシュに問題があります。 は、私は次の応答を送信するサーバーを持っているRetrofitでのキャッシングAndroid
サーバー:Apacheの X-Poweredのバイ:PHP/5.5.38 のApp-バージョン:{ "ID":3、 "CURRENT_VERSION": "0.2"、 "必須": "true"、 "build_date": "17-6-2016"} キャッシュ制御:public、max-age = 300、キャッシュのみ、max-stale = 86400 アップグレード:h2 接続: 転送エンコーディングをアップグレード:応答が正しくキャッシュされますが、レトロフィットとそれがないことはありませんボレーでアプリケーション/ JSON
: のContent-Typeをチャンク。私はこの
> Cache cache = new Cache(cacheDir, cacheSize);
> httpClient=new OkHttpClient();
> httpClient.setCache(cache);
> httpClient.networkInterceptors().clear();
> httpClient.networkInterceptors().add(new NetworkInterceptor());
> restService=new Retrofit.Builder()
> .baseUrl(HOST_URL)
> .addConverterFactory(GsonConverterFactory.create())
> .client(httpClient)
> .build()
> .create(RestService.class);
ような改造クライアントと
パブリッククラスNetworkInterceptorがインターセプタを実装するネットワークインターセプタ{ パブリック静的最終列DEBUG_TAG = NetworkInterceptor.class.getSimpleName()設定しています。
@Override
public Response intercept(Chain chain) throws IOException {
Request request=chain.request();
User user=UserHandler.getUser();
if (user!=null&&user.getToken()!=null){
Log.d(DEBUG_TAG,"Authorization: "+user.getToken());
request=request.newBuilder().addHeader("Authorization",user.getToken())
.method(request.method(),request.body())
.build();
}
Response response = chain.proceed(request);
Log.d(DEBUG_TAG, "Cache-Control: " + response.cacheControl());
return response;
}
}
キャッシュフォルダが作成されますが、唯一のフォルダは、「ジャーナル」フォルダが存在しています。変更するか、サーバーまたはAndroidクライアントに追加する必要がありますか?私は助けを感謝します