okhttp和第三方封裝好的OKHttp庫-okhttp-utils
1_OKHttp簡介
1.1_簡介
OKHttp是一款高效的HTTP客戶端,支持連接同一地址的鏈接共享同一個socket,通過連接池來減小響應延遲,還有透明的GZIP壓縮,請求緩存等優勢,其核心主要有路由、連接協議、攔截器、代理、安全性認證、連接池以及網絡適配,攔截器主要是指添加,移除或者轉換請求或者回應的頭部信息
這個庫也是square開源的一個網絡請求庫(okhttp內部依賴okio)。現在已被Google使用在Android源碼上了,可見其強大。
關於網絡請求庫,現在應該還有很多人在使用android-async-http。他內部使用的是HttpClient,但是Google在6.0版本裏面刪除了HttpClient相關API,可見這個庫現在有點過時了。
1.2_下載地址
http://square.github.io/okhttp/
1.3_OKHttp主要功能
1、聯網請求文本數據
2、大文件下載
3、大文件上傳
4、請求圖片
2_原生OKHttp的Get和Post請求思路
a.get請求步驟:
1)獲取client對象
2)傳入url獲取request對象
3)獲取response對象
4)利用response對象的body().string()方法獲取返回的數據內容
b.post請求步驟:
1)獲取client對象
2)傳入url獲取request對象,對比get方法,其還有在獲取request對象的時候加多一個post方法用於傳遞客戶端向服務器端發送的數據。
3)獲取response對象
4)利用response對象的body().string()方法獲取返回的數據內容
3_第三方封裝好的OKHttp庫-okhttp-utils
1_下載並且運行案例
https://github.com/hongyangAndroid/okhttp-utils
2_該案例導入之後會有報錯,而報錯處理為:
在sample-okhttp中的build.gradle文件中
如下配置
allprojects {
|
3.okhttp-utils的使用步驟
1)將okhttp-utils集成到案例中
2)註釋掉okhttp庫和okio庫,因為okhttputils庫裏面本身就有okhttp庫和okio庫
3)明確我們要用這個第三方工具用來幹嗎,從而使用相對應的方法。
4.利用okhttp-utils請求文本
a.get請求
1)自定義一個類,繼承StringCallback,用於獲取數據過程的提示和用於獲取到的數據的處理
2)直接利用OkHttpUtils的get().url("url").id().build().execute(new 自定義類)方法獲取數據,數據在自定義類中處理。註意:id是用於標記你是誰發過來的請求,也會在自定義類中進行判斷。
b.post請求
1)自定義一個類,繼承StringCallback,用於獲取數據過程的提示和用於獲取到的數據的處理
2)直接利用OkHttpUtils的post().url("url").id().build().execute(new 自定義類)方法獲取數據,數據在自定義類中處理。
註意:如果需要傳數據給服務器,就加多一個params()方法,並且傳入一個變量a,該變量的形式為Map<String, String> ,我們就可以把我們要傳入的數據,寫入到我們的a中,然後
在傳a就可以了。
5.利用okhttp-utils文件下載
步驟:直接調用OkHttpUtils的內置方法並且引用FileCallBack對象用於處理下載到的文件。註意:在實例化FileCallBack對象的時候會傳入你要下載的路徑和文件名。
註意:記得加權限
6.利用okhttp-utils文件上傳到服務器
步驟:
1)獲取文件對象,並且判斷該文件存不存在
2)自定義一個類,繼承StringCallback,用於監控請求服務的過程
3)直接利用OkHttpUtils的post().addFile().url("url").id().build().execute(new 自定義類)方法。
7.使用okhttp-utils請求圖片
步驟:跟上面的差不多,重點在需要使用BitmapCallback()對象。
okhttp和第三方封裝好的OKHttp庫-okhttp-utils