主流網絡框架分析與框架選擇
volley
1.默認Android2.3以上基于HttpURLConnection,2.3以下使用基于HttpClient
2.符合Http緩存語義的緩存機制(提供了默認的磁盤和內存等緩存)
3.請求隊列的優先級排序
4.提供多樣的取消機制
5.提供簡便的圖片加載工具
缺點:不能下載文件Android-async-http
1.進行異步HTTP請求,在匿名回調中處理響應
2.HTTP請求發生在UI線程之外
3.請求使用線程池來平衡資源使用
4.GET / POST參數構建器(RequestParams)
5.多部分文件上傳,沒有其他第三方庫
6.對你的應用程序的微小的開銷,只有60kb的一切
7.自動智能請求重試針對多個移動連接進行了優化
8.自動gzip響應解碼支持超快速請求
9.可選的內置響應解析成JSON(JsonHttpResponseHandler)
10.可選持久性Cookie存儲,將Cookie保存到應用程序的SharedPreferences中
缺點:麻雀雖小,五臟俱全,但是官方不再更新維護!Afinal
1.數據庫模塊:Android中的orm框架,使用了線程池對sqlite進行操作
2.注解模塊:Android中的ioc框架,完全注解方式就可以進行UI綁定和解綁定類似于ButterKnife。
3.網絡模塊:通過HttpClient進行Http數據封裝請求,支持ajax方式加載,支持下載、上傳
4.圖片緩存模塊:通過FinalBitmap,ImageView加載bitmap的時候無需考慮bitmap加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象
缺點:功能太豐富,代碼耦合高,并且不再維護!XUtils
1.包含了orm, http(s), image, view注解, 但依然很輕量級(246K), 并且特性強大, 方便擴展:
2.穩定的基石: AbsTask和統一的回調接口Callback, 任何異常, 即使你的回調方法實現有異常都會進入onError, 任何情況下onFinished總會讓你知道任務結束了.
3.基于高效穩定的orm工具, http模塊得以更方便的實現cookie(支持domain, path, expiry等特性)和 緩存(支持Cache-Control, Last-Modified, ETag等特性)的支持.
4.有了強大的http及其下載緩存的支持, image模塊的實現相當的簡潔, 并且支持回收被view持有, 但被Mem Cache移除的圖片, 減少頁面回退時的閃爍..
5.view注解模塊僅僅400多行代碼卻靈活的支持了各種View注入和事件綁定, 包括擁有多了方法的listener的支持.
缺點:功能太豐富,代碼耦合高,并且不再維護!OkHttp
1.HTTP / 2支持允許同一主機的所有請求共享套接字。
2.連接池減少請求延遲(如果HTTP / 2不可用)。
3.透明GZIP縮小下載大小。
4.響應緩存可以避免重復請求的網絡。
5.當網絡麻煩時,OkHttp堅持不懈:它將從常見的連接問題中靜默地恢復。如果您的服務有多個IP地址,如果第一個連接失敗,OkHttp將嘗試替代地址。這對于IPv4 + IPv6以及在冗余數據中心中托管的服務是必需的。 OkHttp啟動與現代TLS功能(SNI,ALPN)的新連接,如果握手失敗,則返回TLS 1.0。
6.使用OkHttp很容易它的請求/響應API設計有流暢的構建器和不變性。它支持同步阻塞調用和具有回調的異步調用。
缺點:暫無!如今的首選!
-
Retrofit
1.支持okhttp
2.注解處理,簡化代碼
3.支持上傳和下載文件
4.支持自己更換解析方式
5.支持多種http請求庫
缺點:暫無!如今的首選!
網絡框架命脈之http協議
什么是http協議
超文本傳輸協議,輸入相應網址,向服務器發送請求,如果能處理,就把相應的頁面渲染出來http版本區別
0.9:互聯網萌芽時期的協議,什么請求頭這些都是沒有的,只有簡單的get
1.0 1.0+: 支持了請求頭和響應頭,多媒體等相關的基本字段功能,增加版本號,代理連接
1.1:最流行的版本,支持持久連接,緩存,管道發送多個請求
2.0:由于請求頭對網絡帶寬造成的浪費,新增spdy:
1.多路復用2.壓縮http頭的字段3.使用ssl傳輸協議4.對數據gzip壓縮5提供服務方向客戶端通信http的幾種請求方式
get:請求獲取Request——URL所標識的資源
post:在Request——URL所標識的資源后附加新的數據
head:請求獲取由Request——URL所標識的資源的響應頭
put:請求服務器存儲一個資源,并用Request——URL作為標識
delete:請求刪除Request——URL所標志的資源
trace:請求服務器回收收到的請求信息,用于診斷測試
connect:保留將來使用
potions:查詢服務器的性能,或者查詢資源http協議的特點
1.C/S架構支持
2.簡單快速:客戶向服務器請求服務時,只需要方法和路徑,通信速度快
3.靈活:允許任意類型的數據隊形,由Content——Type加以標記。
4.無連接。
5.無狀態。http請求頭/響應頭
請求頭:
Accept:支持的數據類型
Accept-Encoding:數據壓縮方法
Accept-Language:支持的語言
Cache-Control:數據緩存
Connections:連接方式,一般是長連接(keep-alive)
Cookie:攜帶的額外信息
Host:主機
Pragma :緩存相關
Referer:當前網頁的上一個地址
User-Agent:瀏覽器的參數信息
響應頭:
Cache-Control:緩存時間控制
Connection:連接方式
Content-Type:數據類型
Date:緩存時間
Expires:緩存失效的標記
Pragma:緩存相關
響應碼:
100-101:錯誤信息提示
200-206:成功
300-305:重定向
400-415:客戶端錯誤
500-505:服務器錯誤
網絡框架基石之okhttp3
-
同步GET請求
image.png - 異步GET請求
- 參數URL拼接GET請求(構建HttpUrl)
- Head參數頭GET請求
- POST請求(構建FromBody)
- 上傳文件音視頻POST(構建RequestBody和MultipartBody)
網絡框架之多線程下載功能設計與實現
- 下載文件http相關字段
1.Transfer-Encoding:chunked
2.content-length
3.Range