亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 okhttp3 檢查和恢復緩存文件

使用 okhttp3 檢查和恢復緩存文件

茅侃侃 2023-02-23 14:47:49
我正在使用 okhttp3 向服務器發出請求,而不是使用改造。我的想法是撥打電話并將響應保存在緩存中 15 分鐘。如果在這 15 分鐘內再次發出請求,則恢復緩存響應,15 分鐘后,再次從服務器請求它。這是我的代碼:public class Handler_JSON_get {    public Handler_JSON_get() {    }    public String makeServiceCall(String url, JSONObject data) {        final MediaType JSON = MediaType.parse("application/json; charset=utf-8");        Cache cache = new Cache(new File(Environment.getExternalStorageDirectory().getPath() + "/Android/data/MY_PACKAGE/", "cache"), 10 * 1024 * 1024);        OkHttpClient okHttpClient;            Log.i("2134","Usando caché");             okHttpClient = new OkHttpClient.Builder()                    .addNetworkInterceptor(provideCacheInterceptor())                    .readTimeout(45, TimeUnit.SECONDS)                    .protocols(Arrays.asList(Protocol.HTTP_1_1))                    .addInterceptor(provideCacheInterceptor())                    .cache(cache)                    .build();        Request request = new Request.Builder()                .url(url)                .get()                .build();        try {            Response response = okHttpClient.newCall(request).execute();            Log.i(TAG,"Response:"+response.code());            return response.body().string();        } catch (Exception e) {            e.printStackTrace();            return null;        }    }    Interceptor provideCacheInterceptor() {        return new Interceptor() {            @Override            public Response intercept(Interceptor.Chain chain) throws IOException {                Response response = chain.proceed(chain.request());                CacheControl cacheControl = new CacheControl.Builder()                        .maxAge(15, TimeUnit.MINUTES)                        .build();                return response.newBuilder()                        .header("cache", cacheControl.toString())                        .build();            }        };    }}問題是他總是打電話給服務器,我有很多疑問。okhttp3 負責查看存儲中是否有緩存的響應?該調用保存了一個日志文件,這是正確的文件嗎?我錯過了什么或者我做錯了什么?
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

我花了一些時間才發現:正確的標頭名稱是Cache-Control,而不是cache

return?response.newBuilder()
????????????????????.header("Cache-Control",?cacheControl.toString())
????????????????????.build();

另外似乎添加攔截器 withaddNetworkInterceptor就足夠了,沒有必要也添加它 withaddInterceptor


查看完整回答
反對 回復 2023-02-23
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號