1. 程式人生 > >okhttp和第三方封裝好的OKHttp庫-okhttp-utils

okhttp和第三方封裝好的OKHttp庫-okhttp-utils

projects https esp lang call 實例化 透明 square sample

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 {
repositories {
maven { url "https://jitpack.io" }
}
}

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