1. 程式人生 > >Android中幾種主流網路框架比較

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中

3.使用方法
(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 資源。