付費下載
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】Android開發(fā)之OkHttp3.4.x
HTTP是現(xiàn)代應用程序訪問網(wǎng)絡的一種方式。網(wǎng)絡中很多請求就是使用的http方式,來訪問網(wǎng)絡的。Android從4.4開始,HttpUrlConnection開始使用okhttp作為底層實現(xiàn)。實現(xiàn)原理如下圖:這篇博客簡單說一下okhttp的使用。文字部分沒有講清楚的,可以查看代碼里面的注釋。首先看一下okHttp怎么工作的。首先我們看看一個okhttp完整的網(wǎng)絡訪問,都涉及到了那幾個類(這里先說核心類)。1.OkHttpClient:Call類的工廠,Call是用來發(fā)送網(wǎng)絡請求和接收服務器響應的類。這個類實例可以設置攔截器,緩存大小,緩存目錄,連接池等信息。2.Request:是用來創(chuàng)建http請求,這個請求里面可以設置請求頭信息,網(wǎng)絡訪問地址,請求方式(GET,POST,DELETE,PUT)等。3.Call:一個接口,一個準備執(zhí)行的請求。具體代碼:/**
*
首先構建OkHttpClient,<br
/>
*
1.
方法:直接使用new
關鍵字創(chuàng)建
*
2.
方法:使用構造著模式,OkHttpClient.Builder.build方法構造。
*
這個類是用來配置和創(chuàng)建HTTP
連接。在大多數(shù)的程序中,這個類可以封裝成一個單利模式
*
來進行程序網(wǎng)絡訪問的統(tǒng)一管理。
*
設置
共享的響應緩存、線程池、連接復用
*
(要設置這些東西,請使用官方提供的方法,OkHttpClient.Builder來設置緩存目錄、緩存大小,
*
配置連接池,
*
配置攔截器,
*
)
*然后構建Request請求對象<br
/>
*
request對象只能使用Request.Builder.build來創(chuàng)建對象。
*
最后Call,使用httpClient.newCall(request)來生成一個執(zhí)行對象。
*
用call對象,調用execute方法,執(zhí)行網(wǎng)絡請求
*
*/
File
file
=
new
File(Environment.getDataDirectory().getAbsolutePath()+File.pathSeparator+"http_cache");
final
Cache
cache
=
new
Cache(file,
20000);
//最大的閑置連接數(shù)量,
ConnectionPool
pool
=
new
ConnectionPool(10,
5,
TimeUnit.SECONDS);
//call的工廠類,Call是用來發(fā)送請求和接收響應的類
OkHttpClient
httpClient
=
new
OkHttpClient.Builder().addInterceptor(new
Interceptor()
{
@Override
public
Response
intercept(Chain
chain)
throws
IOException
{
//請求時的參數(shù)
Response
response
=
ceed(chain.request());
okhttp3.MediaType
mediaType
=
response.body().contentType();
//
響應體
String
content
=
response.body().string();
return
response.newBuilder()
.body(okhttp3.ResponseBody.create(mediaType,
content))
.build();
}
//
這只連接池,緩存
}).connectionPool(pool).cache(cache).build();
//這里面來設置網(wǎng)絡訪問的頭信息,以及訪問的網(wǎng)絡地址,這里默認使用get方式請求
Request
request
=
new
Request.Builder().url("").build();
Call
call
=
httpClient.newCall(request);
call.enqueue(new
Callback()
{
@Override
public
void
onFailure(Call
call,
IOException
e)
{
Log.d("--MainActivity--",
"onFailure:
網(wǎng)絡訪問失敗");
}
@Override
public
void
onResponse(Call
call,
Response
response)
throws
IOException
{
//
這個方法在網(wǎng)絡訪問成功之后回執(zhí)行。response響應體,實例里封裝了服務器返回的數(shù)據(jù)。
//
最常用的就是body(),服務器返回的數(shù)據(jù)(ResponseBody)。這個ResponseBody里面是服務器具體返回的數(shù)據(jù)
//
如果是返回的字符串則用string()方法。如果是流,
則byteStream(),字節(jié)數(shù)組bytes().
Log.d("--MainActivity--",
"onResponse:
"+response.body().string());
}
});這樣一個完整的網(wǎng)絡訪問就完成了。使用到得權限:<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑消防設施檢測與維修操作手冊
- 八年級數(shù)學第五章二元一次方程組知識精講
- 家政服務操作與標準手冊
- 倉儲企業(yè)叉車操作人員管理制度
- 房地產(chǎn)中介帶看服務合同協(xié)議(2026年)
- 房地產(chǎn)中介代理銷售合同協(xié)議
- 2025-2030中國無縫壓縮服行業(yè)經(jīng)營效益與營銷發(fā)展趨勢研究報告
- 2025-2030醫(yī)療健康人才培養(yǎng)與繼續(xù)教育研究
- 2025-2030匈牙利畜牧業(yè)規(guī)?;F(xiàn)狀與食品安全監(jiān)管體系優(yōu)化方案研究
- 2025-2030匈牙利工程技術行業(yè)市場潛力研究及技術服務創(chuàng)新和工程項目風險管理深度分析報告
- 服裝SKU知識培訓課件
- 二零二五年度快遞運輸快遞網(wǎng)點加盟合作協(xié)議
- 相互抵款協(xié)議書范本
- (北師大版)八年級數(shù)學上冊(全冊)單元測試卷
- 電廠生產(chǎn)準備管理制度
- 混凝土攪拌站試運行報告
- T/CCMA 0133-2022高爾夫球車
- 胸部損傷的處理和護理
- 張家口市2025屆高三年級全市第二次模擬考試英語試題(含答案詳解)
- 干線公路養(yǎng)護培訓課件
評論
0/150
提交評論