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 {
    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()對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM