對OkHttp進行封裝,實現了只查詢緩存,網絡請求失敗自動查詢本地緩存等功能
就我個人的使用感覺而言,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 />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!