OKHttp是一款高效的HTTP客戶端,支持鏈接同一地址的連接共享同一個socket,經過鏈接池來減少響應延遲,還有透明的GZIP壓縮,請求緩存等優點,其核心主要有路由、鏈接協議、攔截器、代理、安全性認證、鏈接池以及網絡適配,攔截器主要是指添加,移除或者轉換請求或者回應的頭部信息
這個庫也是square開源的一個網絡請求庫(okhttp內部依賴okio)。如今已被Google使用在Android源碼上了,可見其強大。
關於網絡請求庫,如今應該還有不少人在使用android-async-http。他內部使用的是HttpClient,可是Google在6.0版本里面刪除了HttpClient相關API,可見這個庫如今有點過期了。android
http://square.github.io/okhttp/git
一、聯網請求文本數據
二、大文件下載
三、大文件上傳
四、請求圖片github
a.get請求步驟:緩存
1)獲取client對象安全
2)傳入url獲取request對象服務器
3)獲取response對象網絡
4)利用response對象的body().string()方法獲取返回的數據內容socket
b.post請求步驟:async
1)獲取client對象maven
2)傳入url獲取request對象,對比get方法,其還有在獲取request對象的時候加多一個post方法用於傳遞客戶端向服務器端發送的數據。
3)獲取response對象
4)利用response對象的body().string()方法獲取返回的數據內容
https://github.com/hongyangAndroid/okhttp-utils
以下配置
allprojects {
|
1)將okhttp-utils集成到案例中
2)註釋掉okhttp庫和okio庫,由於okhttputils庫裏面自己就有okhttp庫和okio庫
3)明確咱們要用這個第三方工具用來幹嘛,從而使用相對應的方法。
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就能夠了。
步驟:直接調用OkHttpUtils的內置方法而且引用FileCallBack對象用於處理下載到的文件。注意:在實例化FileCallBack對象的時候會傳入你要下載的路徑和文件名。
注意:記得加權限
步驟:
1)獲取文件對象,而且判斷該文件存不存在
2)自定義一個類,繼承StringCallback,用於監控請求服務的過程
3)直接利用OkHttpUtils的post().addFile().url("url").id().build().execute(new 自定義類)方法。
步驟:跟上面的差很少,重點在須要使用BitmapCallback()對象。