Android4種網絡連接方式HttpClient、HttpURLConnection、OKHttp和Volley優缺點

1.HttpClient

優點:apache httpclient高效穩定,有很多API

缺點:由於API太多,很難在不破壞兼容性的情況下對它進行升級和擴展,維護成本高,故android 開發團隊不願意在維護該庫而是轉投更爲輕便的httpurlconnection

Apache HttpClient早就不推薦httpclient,5.0之後乾脆廢棄,後續會刪除。6.0刪除了HttpClient。Java開發用HttpClient,官方推薦Android開發用HttpUrlConnection。

2.HttpURLConnection

優點:HttpURLConnection是一種多用途、輕量極的HTTP客戶端,使用它來進行HTTP操作可以適用於大多數的應用程序。雖然HttpURLConnection的API提供的比較簡單,但是同時這也使得我們可以更加容易地去使用和擴展它。比較輕便,靈活,易於擴展。

缺點:在Android 2.2版本之前,HttpURLConnection一直存在着一些令人厭煩的bug。比如說對一個可讀的InputStream調用close()方法時,就有可能會導致連接池失效了。那麼我們通常的解決辦法就是直接禁用掉連接池的功能。

在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建議在android 2.3以後使用HttpUrlConnection,2.3之前使用HttpClient。

3.OkHttp

OkHttp是一個現代,快速,高效的Http client,是一個相對成熟的解決方案,支持HTTP/2以及SPDY(SPDY介紹網址:https://zh.wikipedia.org/wiki/SPDY,SPDY(發音如英語:speedy),一種開放的網絡傳輸協議,由Google開發),它爲你做了很多的事情。

OKHttp是Android版Http客戶端。非常高效,支持SPDY、連接池、GZIP和HTTP緩存。

支持SPDY,可以合併多個到同一個主機的請求

OkHttp實現的諸多技術如:連接池,gziping,緩存等就知道網絡相關的操作是多麼複雜了。

OkHttp扮演着傳輸層的角色。

OkHttp使用Okio來大大簡化數據的訪問與存儲,Okio是一個增強 java.io 和 java.nio的庫。

OkHttp 處理了很多網絡疑難雜症:會從很多常用的連接問題中自動恢復。如果您的服務器配置了多個IP地址,當第一個IP連接失敗的時候,OkHttp會自動嘗試下一個IP。

OkHttp還處理了代理服務器問題和SSL握手失敗問題。

OkHttp是一個Java的HTTP+SPDY客戶端開發包,同時也支持Android。需要Android 2.3以上

OKHttp是Android版Http客戶端。非常高效,支持SPDY、連接池、GZIP和 HTTP 緩存。

默認情況下,OKHttp會自動處理常見的網絡問題,像二次連接、SSL的握手問題。

如果你的應用程序中集成了OKHttp,Retrofit默認會使用OKHttp處理其他網絡層請求。

從Android4.4開始HttpURLConnection的底層實現採用的是okHttp

緩存響應避免重複的網絡請求

目前,該封裝庫志支持:
• 一般的get請求
• 一般的post請求
• 基於Http的文件上傳
• 文件下載
• 上傳下載的進度回調
• 加載圖片
• 支持請求回調,直接返回對象、對象集合
• 支持session的保持
• 支持自簽名網站https的訪問,提供方法設置下證書就行
• 支持取消某個請求

4.Volley

Volley是一個簡化網絡任務的庫。他負責處理請求,加載,緩存,線程,同步等問題。它可以處理JSON,圖片,緩存,文本源,支持一定程度的自定義。

Volley在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。

**Volley停止了更新,而OkHttp得到了官方的認可,並在不斷優化。
因此我最終替換爲了OkHttp**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章