1. 程式人生 > >Android知識點之網路底層封裝:細數常用的網路請求框架

Android知識點之網路底層封裝:細數常用的網路請求框架

   Android知識體系更新如此之快,讓人一不小心就會感覺,額,我out了,翻看之前的文章,14年、15年大家討論的網路底層框架都是HttpURLConnection,HttpClient,細數二者的異同優劣,到後來推崇的AsyncTask+HttpClient,往事如風,流行的很快過去HttpClient已被廢棄,到如今如果不用Okhttp、Volley、Retrofit好像都不好意思開口。

 1) HttpURLConnectionURLConnection的一個子類一個輕量級的http 客戶端,HttpURLConnection URLConnection的基礎上做了進一步改進,增加了一些用於操作

http資源的便捷方法。

2) HttpClient就是一個增強版的HttpURLConnection,增加了一些功能,由於HttpClient API較多,體型較大升級和維護起來較為繁瑣,Android團隊在API 23(Android 6.0)中移除了對HttpClient的支援.

利用原生的這兩種方式編寫網路程式碼,需要自己考慮很多,獲取資料或許可以,但是如果要將手機本地資料上傳至網路,根據不同的web端介面,需要組織不同的資料內容上傳,給手機端造成了很大的工作量。

     3) AsyncTask+HttpClient, 利用AsyncTask的一步功能和操作UI方面的優勢,AsyncTask+HttpClient網路請求框架典型的實現

使用上述AsyncTask+實現類和Httpclient進行上傳並顯示進度的功能,非常簡單,使用AsyncTask非同步上傳。

4)OkHttp是 Square 公司開源的針對 Java 和 Android 程式,現在已被官方採用了吧。它是封裝的一個高效能 http 請求庫,核心功能與HttpUrlConnection 一樣的,而且 OkHttp 又封裝了執行緒池,封裝了資料轉換,封裝了引數使用、錯誤處理等,API使用起來更加方便。可以把它理解成是一個封裝之後的類似 HttpUrlConnection 的一個庫,用HttpUrlConnection 時候需要自己開子執行緒,自己寫Handler處理函式,而okHttp已經幫你封裝好了,開好了執行緒,封裝了回撥函式,你只需要實現介面就行,貼心吧

5)Volley 是 Google 官方出的一套小而巧的非同步請求庫,該框架封裝的擴充套件性很強,支援 HttpClient、HttpUrlConnection,甚至支援 OkHttp,Volley 裡面也封裝了 ImageLoader 。Volley 也有缺陷,比如不支援 post 大資料,所以不適合上傳檔案。不過 Volley 設計的初衷本身也就是為頻繁的、資料量小的網路請求而生!

6) Retrofit 是 Square 公司出品的預設基於 OkHttp 封裝的一套 RESTful 網路請求框架.好像水很深的樣子... ...

總結:

如果需要上傳大資料,推薦okhttp,否則推薦volley, Volley 的優勢在於封裝的更好,更容易使用,擴充套件性比較好,而okhttp優勢在效能上。

參考文章:https://zhuanlan.zhihu.com/p/21879931