對OkHttp進行封裝,實現了只查詢緩存,網絡請求失敗自動查詢本地緩存等功能

jopen 9年前發布 | 71K 次閱讀 OkHttp Android開發 移動開發

 

就我個人的使用感覺而言,OkHttp算是用得最順手的一個網絡請求框架了,提供了攔截器 Interceptor ,可以很方便地在請求的時候做各種操作,比如添加請求頭、url后面添加額外數據等,但是Android程序對于網絡請求一般最好還是應該本地緩存請求的數據,在斷網的時候可以在本地數據中讀取展示出來,不致于一片空白,當然,關鍵數據還是應該從服務器獲取,這個根據情況判斷。

首先,OkHttp是允許在本地保存請求和結果的,通過設置 Cache-Control: max-age 可以設置緩存保存的時間,OkHttp可設置CacheControl.FORCE_CACHE或CacheControl.FORCE_NETWORK來讓請求只從本地緩存獲取或只從服務器獲取,這里寫了個工具,將請求的方式擴展到四種 

*ONLY_NETWORK 只查詢網絡數據

*ONLY_CACHED 只查詢本地緩存

*CACHED_ELSE_NETWORK 先查詢本地緩存,如果本地沒有,再查詢網絡數據

*NETWORK_ELSE_CACHED 先查詢網絡數據,如果沒有,再查詢本地緩存

這樣就可以根據場景需要在沒網絡的情況下加載本地數據(例如app首頁的數據展示),使用方法也比較簡單

okHttpUtils = new OKHttpUtils.Builder(this).build();
okHttpUtils.get("

    @Override
    public void onResponse(final Response response) throws IOException {
        //  tv.setText(response.body().string());
        Log.d("response", response.toString());
        String str = response.body().string();
        Log.d("response", str);
    }
});</pre><br />

具體的用法參考 https://github.com/duzechao/OKHttpUtils

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!