JDK支持的HttpUrlConnection
HttpUrlConnection是JDK里提供的聯網API,是最原始最基本的API,大多數開源的聯網框架基本上也是基於此進行的封裝的。
HttpUrlConnection
的API簡單,體積小,維護方便。
在2.3后在不引入第三方網絡框架時建議使用
HttpUrlConnection而非
HttpClient
。
Apache支持的HttpClient
HttpClient是開源組織Apache提供的Java請求網絡框架,其最早是為了方便Java服務器開發而誕生的,是對JDK中的HttpUrlConnection各API進行了封裝和簡化,提高了性能並且降低了調用API的繁瑣,Android因此也引進了這個聯網框架,我們不需要導入任何jar或者類庫就可以直接使用。值得注意的是Android官方已經宣布
不建議使用HttpClient了,我們再開發的時候盡量少用吧。
OkHttp是
Square公司實現的一個 Java 的 HTTP+SPDY 客戶端開發包,
需要Android 2.3以上。OKHttp非常高效,支持SPDY、連接池、GZIP和 HTTP 緩存。默認情況下,OKHttp會自動處理常見的網絡問題,像二次連接、SSL的握手問題。從Android4.4開始HttpURLConnection的底層實現采用的是OkHttp。
Retrofit是
Square公司是一個 RESTful的 HTTP 網絡請求框架的封裝。
Retrofit 專注於接口的封裝,OkHttp 專注於網絡請求的高效,二者分工協作!
我們的應用程序通過 Retrofit 請求網絡,實際上是使用 Retrofit 接口層封裝請求參數、Header、Url 等信息,之后由 OkHttp 完成后續的請求操作,在服務端返回數據之后,OkHttp 將原始的結果交給 Retrofit,Retrofit 根據用戶的需求對結果進行解析的過程。
早期使用HttpClient,后來使用HttpURLConnection,是谷歌2013年推出的網絡請求框架,非常適合去進行數據量不大,但通信頻繁的網絡操作,而對於大數據量的網絡操作,比如說下載文件等,Volley的表現就會非常糟糕。
Android-Async-Http是專門針對Android在Apache的
HttpClient
基礎上構建的異步的callback-based http client。所有的請求全在UI線程之外發生,而callback發生在創建它的線程中,應用了Android的Handler消息機制。