Android中幾種主流網路框架比較
引言
目前網路請求框架也比較多,本文針對封裝的比較完善的Volley,Okhttp,Retrofit,AsyncHttpClient研究比較了,才知道選擇哪個最適合。
一.Volley
1.Volley主要特點 1. 擴充套件性強
基於介面設計。
2. 一定程度上符合http規範。
返回包括ResponseCode 的處理,請求頭的處理,快取機制的支援。
3. 重試以及優先順序的定義。
4. 2.3以上基於HttpUrlconnection。
2.3以下是Httpclient(沒有這號機子了吧)
5. 提供簡單的圖片載入工具。
2.Volley的使用
3.Volley問題收錄:
二.Retrofit
Retrofit 基於註解,提供JSON to POJO(Plain Ordinary Java Object,簡單Java物件),POJO to JSON,網路請求(POST,GET,PUT,DELETE等)封裝。
三.Okhttp 口碑相當好啊,
這個onResponse執行的執行緒並不是UI執行緒。
Interceptor 雲端響應攔截器, 設定快取策略
1)應用攔截器(ApplicationInterceptors)
主要用於檢視請求資訊及返回資訊,如連結地址、頭資訊、引數資訊等
2)網路攔截器(Network Interceptors)
可以新增、刪除或替換請求頭資訊,還可以改變的請求攜帶的實體。
noCache :不使用快取,全部走網路
noStore : 不使用快取,也不儲存快取
onlyIfCached : 只使用快取
maxAge :設定最大失效時間,失效則不使用
maxStale :設定最大失效時間,失效則不使用
minFresh :設定最小有效時間,失效則不使用
FORCE_NETWORK : 強制走網路
FORCE_CACHE :強制走快取
一般的get、post、基於http檔案上傳、檔案下載、載入圖片、支援請求回撥、直接返回物件、物件集合、支援session的保持。
會從很多常用的連線問題中自動恢復。如果您的伺服器配置了多個IP地址,當第一個IP連線失敗的時候,OkHttp會自動嘗試下一個IP。OkHttp還處理了代理伺服器問題和SSL握手失敗問題。
三.AsyncHttpClient,比較好用
1.簡介
Android中網路請求一般使用Apache HTTP Client或者採用HttpURLConnect,但是直接使用這兩個類庫需要寫大量的程式碼才能完成網路post和get請求,而使用android-async-http這個庫可以大大的簡化操作,它是基於Apache’s HttpClient ,所有的請求都是獨立在UI主執行緒之外,通過回撥方法處理請求結果,採用android Handler message 機制傳遞資訊。
2.特性
(1)採用非同步http請求,並通過匿名內部類處理回撥結果
(2)http請求獨立在UI主執行緒之外
(3)採用執行緒池來處理併發請求
(4)採用RequestParams類建立GET/POST引數
(5)不需要第三方包即可支援Multipart file檔案上傳
(6)大小隻有25kb
(7)自動為各種行動電話處理連線斷開時請求重連
(8)超快的自動gzip響應解碼支援
(9)使用BinaryHttpResponseHandler類下載二進位制檔案(如圖片)
(10) 使用JsonHttpResponseHandler類可以自動將響應結果解析為json格式
(11)持久化cookie儲存,可以將cookie儲存到你的應用程式的SharedPreferences中
(1)到官網http://loopj.com/android-async-http/下載最新的android-async-http-1.4.9.jar,然後將此jar包新增進Android應用程式 libs資料夾
(2)通過import com.loopj.android.http.*;引入相關類
(3)建立非同步請求
android-async-http 開源框架可以使我們輕鬆地獲取網路資料或者向伺服器傳送資料,最關鍵的是,它是非同步框架,在底層使用執行緒池處理併發請求,效率很高,使用又特別簡單。
以往我們在安卓上做專案,比如要下載很多圖片、網頁或者其他的資源,多數開發者會選擇一個執行緒一個下載任務這種模型,因為安卓自帶的 AndroidHttpClient 或者 java 帶的 java.net.URL ,預設都是阻塞式操作。這種模型效率不高,對併發要求高的 APP 來講,並不適用。有的人會選擇使用 nio 自己實現,程式碼複雜度又很高。
AsyncHttpClient 作為 android-async-http 框架的一個核心應用類,使用簡單,可以處理文字、二進位制等各種格式的 web 資源。