okhttp

okhttp

android網路框架之OKhttp 一個處理網路請求的開源項目,是安卓端最火熱的輕量級框架,由移動支付Square公司貢獻(該公司還貢獻了Picasso) 用於替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,現在已經打不出來)

基本信息

優勢

允許連線到同一個主機地址的所有請求,提高請求效率  

共享Socket,減少對伺服器的請求次數  

通過連線池,減少了請求延遲  

快取回響數據來減少重複的網路請求  

減少了對數據流量的消耗  

自動處理GZip壓縮  

功能

get,post請求  

檔案的上傳下載  

載入圖片(內部會圖片大小自動壓縮)  

支持請求回調,直接返回對象、對象集合  

支持session的保持  

使用步驟

Android Studio的用戶:

使用Studio的圖形管理進行添加.(注意:okhttp有2.0版本和3.0以後的版本,這兩個版本有的方法使用上有些許的不同)  

okhttp okhttp

Eclipse的用戶:

可以下載最新的jar okhttp he latest JAR ,添加依賴就可以用了。

最新的jar地址:okio the latest JAR

注意:okhttp內部依賴okio,同時導入okio:

注意:使用網路在清單檔案添加許可權:

(一)Http Get的使用步驟:

對了網路載入庫,最常見的是http get請求了,比如獲取一個網頁的內容。  

//1.創建OkHttpClient對象,並設定連線逾時時間(讀取的可寫可不寫)

注意:這種設定逾時時間是OKhttp2.0特有的通過方法來進行設定

提示:設定逾時時間在OKhttp3.0以後,使用build的方式進行

//02.通過build來創建一個Request請求,沒有設定get,而是直接設定一個url地址,默認就是一個get方式

//03.創建一個call對象,參數就是Request請求對象,傳送請求

get請求的步驟總結:首先構造一個Request對象,參數必須有個url參數,當然可以通過Request.Builder設定更多的參數比如:header、method等。

然後通過request的對象去構造得到一個Call對象,類似於將請求封裝成了任務,既然是任務,就會有execute()和cancel()等方法。

最後,以異步的方式去執行請求,所以調用的是call.enqueue,將call加入調度佇列,然後等待任務執行完成,在Callback中即可得到結果。

整體的寫法還是比較長的,所以封裝肯定是要做的。

okhttp注意:

onResponse回調的參數是response,一般情況下

• 獲得返回的字元串,通過response.body().string()獲取;

• 獲得返回的二進制位元組數組,則調用response.body().bytes();//通過二進制位元組數組,可以轉換為BItmap圖片資源

• 獲得返回的inputStream,則調用response.body().byteStream() ;這裡支持大檔案下載,有inputStream可以通過IO的方式寫檔案。

不過也說明一個問題,這個onResponse執行的執行緒並不是UI執行緒(主執行緒不能有耗時操作)。如果希望操作控制項,還是需要使用handler等

這裡是異步的方式去執行,也支持阻塞的方式,Call有一個execute()方法,可以直接調用call.execute()通過返回一個Response,最下面的代碼就是

(二) Http Post 攜帶參數的使用步驟:

與get請求格式基本一致,就是Request的構造的不同。基於Http的檔案,字元串,鍵值上傳 

注意:後面的就和上面一樣了。

(三)使用post進行表單(鍵值對)上傳

(上一個使用的Create創建RequesBody)通過Builder構造RequestBody,叫做MultipartBuilder,一般用來用來上傳表單(鍵值對)  

相關詞條

熱門詞條

聯絡我們