欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中使用OkHttp包處理HTTP的get和post請(qǐng)求的方法

 更新時(shí)間:2016年07月13日 10:35:09   作者:XWdoor  
OkHttp包為安卓開(kāi)發(fā)中的HTTP協(xié)議網(wǎng)絡(luò)編程帶來(lái)了很大的便利,這里我們就來(lái)看一下最基本的、Android中使用OkHttp包處理HTTP的get和post請(qǐng)求的方法:

概覽
http是現(xiàn)在主流應(yīng)用使用的網(wǎng)絡(luò)請(qǐng)求方式, 用來(lái)交換數(shù)據(jù)和內(nèi)容, 有效的使用HTTP可以使你的APP 變的更快和減少流量的使用
OkHttp 是一個(gè)很棒HTTP客戶端(GitHub主頁(yè):https://github.com/square/okhttp):

  • 支持SPDY, 可以合并多個(gè)到同一個(gè)主機(jī)的請(qǐng)求
  • 使用連接池技術(shù)減少請(qǐng)求的延遲(如果SPDY是可用的話)
  • 使用GZIP壓縮減少傳輸?shù)臄?shù)據(jù)量
  • 緩存響應(yīng)避免重復(fù)的網(wǎng)絡(luò)請(qǐng)求

當(dāng)你的網(wǎng)絡(luò)出現(xiàn)擁擠的時(shí)候,就是OKHttp 大顯身手的時(shí)候, 它可以避免常見(jiàn)的網(wǎng)絡(luò)問(wèn)題,如果你的服務(wù)是部署在不同的IP上面的,如果第一個(gè)連接失敗, OkHTtp會(huì)嘗試其他的連接. 這個(gè)對(duì)現(xiàn)在IPv4+IPv6 中常見(jiàn)的把服務(wù)冗余部署在不同的數(shù)據(jù)中心上.  OkHttp 將使用現(xiàn)在TLS特性(SNI ALPN) 來(lái)初始化新的連接. 如果握手失敗, 將切換到SLLv3

使用OkHttp很容易,   同時(shí)支持 異步阻塞請(qǐng)求和回調(diào).
如果你使用OkHttp ,你不用重寫你的代碼,   okhttp-urlconnection模塊實(shí)現(xiàn)了 java.net.HttpURLConnection 中的API,  okhttp-apache模塊實(shí)現(xiàn)了HttpClient中的API


GET 請(qǐng)求
我們從最簡(jiǎn)單的 Http 請(qǐng)求開(kāi)始學(xué)起,首先需要獲取一個(gè) OkHttpClient 對(duì)象,方法如下:

OkHttpClient mHttpClient = new OkHttpClient();

OkHttpClient 用于管理所有的請(qǐng)求,內(nèi)部支持并發(fā),所以我們不必每次請(qǐng)求都創(chuàng)建一個(gè) OkHttpClient 對(duì)象,這是非常耗費(fèi)資源的。接下來(lái)就是創(chuàng)建一個(gè) Request 對(duì)象了,如下所示:

Request request = new Request.Builder()
  .url("http://www.baidu.com")
  .build();

然后調(diào)用這個(gè)請(qǐng)求即可:

mOkHttpClient.newCall(request).enqueue(new Callback() {
  @Override
  public void onFailure(Call call, IOException e) {
  }
  @Override
  public void onResponse(Call call, Response response) throws IOException {
    Logger.t("123123").i(response.body().string());
  }
});

通過(guò)調(diào)用 newCall 方法傳入之前創(chuàng)建的 Request 對(duì)象,然后調(diào)用 enqueue() 方法開(kāi)始異步請(qǐng)求,該方法需要傳入回調(diào)接口,用于響應(yīng)成功和失敗的回調(diào)。
好了,就是這么簡(jiǎn)單,運(yùn)行程序,Logcat 中打印如下數(shù)據(jù):

2016713102858678.jpg (1697×397)

沒(méi)錯(cuò),這就是百度返回的 html 代碼,我們看起來(lái)很吃力,但是瀏覽器就是根據(jù)這些代碼進(jìn)行解析,然后將百度首頁(yè)顯示出來(lái)。
好了,最簡(jiǎn)單的 http 請(qǐng)求已經(jīng)完成了,實(shí)現(xiàn)這個(gè)功能大概有三步:
創(chuàng)建 OkHttpClient 對(duì)象
創(chuàng)建 Request 對(duì)象
將 Request 對(duì)象添加到 OkHttpClient 中,并傳入回調(diào)函數(shù)。


POST 請(qǐng)求
大家都知道 http 常用的請(qǐng)求分為 GET 和 POST 請(qǐng)求,剛才我們使用的明顯是一個(gè) GET 請(qǐng)求,那么,如何發(fā)起一個(gè) POST 請(qǐng)求呢?其實(shí)很簡(jiǎn)單,在第二步中有一個(gè) post 方法,就可以傳入請(qǐng)求參數(shù)。
首先,創(chuàng)建一個(gè) RequestBody 對(duì)象,這里我們用它的一個(gè)子類 FormBody 創(chuàng)建一個(gè)表單數(shù)據(jù)參數(shù),如下所示:

//表單數(shù)據(jù)
FormBody.Builder builder = new FormBody.Builder();
builder.add("xwdoor","xwdoor");
RequestBody formBody = builder.build();

然后以此構(gòu)建 Request 對(duì)象,如下所示:

Request request = new Request.Builder()
  .url("http:www.baidu.com")
  .post(formBody)
  .build();

調(diào)用 post() 方法,將創(chuàng)建的 RequestBody 對(duì)象傳入即可。開(kāi)始請(qǐng)求與前面講的 GET 請(qǐng)求一樣。實(shí)現(xiàn) POST 請(qǐng)求大概分四步:

  • 創(chuàng)建 OkHttpClient 對(duì)象
  • 創(chuàng)建 RequestBody 對(duì)象
  • 創(chuàng)建 Request 對(duì)象

將 Request 對(duì)象添加到 OkHttpClient 中,并傳入回調(diào)函數(shù)。

相關(guān)文章

  • 詳解Matisse與Glide--java.lang.NoSuchMethodError:com.bumptech.glide.RequestManager.load

    詳解Matisse與Glide--java.lang.NoSuchMethodError:com.bumptech.gl

    這篇文章主要介紹了在使用Matisse與glide4.0.0以及4.0.0之后的版本過(guò)程中,碰到該問(wèn)題java.lang.NoSuchMethodError:com.bumptech.glide.RequestManager.load的解決方法
    2021-08-08
  • Android調(diào)用第三方QQ登錄代碼分享

    Android調(diào)用第三方QQ登錄代碼分享

    現(xiàn)在的項(xiàng)目開(kāi)發(fā),調(diào)用第三方登錄,幾乎是必須的,這篇文章主要介紹了Android調(diào)用第三方QQ登錄代碼分享
    2016-05-05
  • Android Studio下添加assets目錄的實(shí)現(xiàn)方法

    Android Studio下添加assets目錄的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇Android Studio下添加assets目錄的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 淺析SVN在Android Studio中的安裝和配置方法

    淺析SVN在Android Studio中的安裝和配置方法

    這篇文章主要介紹了SVN在Android Studio中的安裝和配置方法,本文通過(guò)圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Android實(shí)現(xiàn)流動(dòng)的漸變色邊框效果

    Android實(shí)現(xiàn)流動(dòng)的漸變色邊框效果

    本文將帶大家學(xué)習(xí)一下如何利用toast中的motion_toast組件實(shí)現(xiàn)一個(gè)流動(dòng)的漸變色邊框效果,文中的示例代碼講解詳細(xì),快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • android繪制多個(gè)黑豎線條

    android繪制多個(gè)黑豎線條

    這篇文章主要為大家詳細(xì)介紹了android繪制多個(gè)黑豎線條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • android仿微信聊天界面 語(yǔ)音錄制功能

    android仿微信聊天界面 語(yǔ)音錄制功能

    這篇文章主要為大家詳細(xì)介紹了Android基于百度語(yǔ)音的語(yǔ)音交互功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法

    Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法

    今天小編就為大家分享一篇Android 6.0權(quán)限請(qǐng)求相關(guān)及權(quán)限分組方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Android隱藏標(biāo)題欄及解決啟動(dòng)閃過(guò)標(biāo)題的實(shí)例詳解

    Android隱藏標(biāo)題欄及解決啟動(dòng)閃過(guò)標(biāo)題的實(shí)例詳解

    這篇文章主要介紹了Android隱藏標(biāo)題欄及解決啟動(dòng)閃過(guò)標(biāo)題的實(shí)例詳解的相關(guān)資料,這里提供兩種方法幫助大家解決這種問(wèn)題,需要的朋友可以參考下
    2017-09-09
  • Android自定義Toast樣式實(shí)現(xiàn)方法詳解

    Android自定義Toast樣式實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Android自定義Toast樣式,Toast是一種很方便的消息提示框,會(huì)在 屏幕中顯示一個(gè)消息提示框,沒(méi)任何按鈕,也不會(huì)獲得焦點(diǎn)一段時(shí)間過(guò)后自動(dòng)消失!非常常用!本文就來(lái)通過(guò)一個(gè)例子把Toast的使用講透
    2023-01-01

最新評(píng)論