最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android第三方HTTP網(wǎng)絡(luò)支持包OkHttp的基礎(chǔ)使用教程

 更新時(shí)間:2016年07月13日 11:08:29   作者:bng86  
在GitHub上開源的安卓HTTP編程包OkHttp正在積累著越來越高的人氣,這里我們就來看一下這款A(yù)ndroid第三方HTTP網(wǎng)絡(luò)支持包OkHttp的基礎(chǔ)使用教程:

OkHttp 包的設(shè)計(jì)和實(shí)現(xiàn)的首要目標(biāo)是高效。這也是選擇 OkHttp 的重要理由之一。OkHttp 提供了對(duì)最新的 HTTP 協(xié)議版本 HTTP/2 和 SPDY 的支持,這使得對(duì)同一個(gè)主機(jī)發(fā)出的所有請(qǐng)求都可以共享相同的套接字連接。如果 HTTP/2 和 SPDY 不可用,OkHttp 會(huì)使用連接池來復(fù)用連接以提高效率。OkHttp 提供了對(duì) GZIP 的默認(rèn)支持來降低傳輸內(nèi)容的大小。OkHttp 也提供了對(duì) HTTP 響應(yīng)的緩存機(jī)制,可以避免不必要的網(wǎng)絡(luò)請(qǐng)求。當(dāng)網(wǎng)絡(luò)出現(xiàn)問題時(shí),OkHttp 會(huì)自動(dòng)重試一個(gè)主機(jī)的多個(gè) IP 地址。
(OkHttp的GitHub主頁(yè):https://github.com/square/okhttp)
HTTP 客戶端所要執(zhí)行的任務(wù)很簡(jiǎn)單,接受 HTTP 請(qǐng)求并返回響應(yīng)。每個(gè) HTTP 請(qǐng)求包括 URL,HTTP 方法(如 GET 或 POST),HTTP 頭和請(qǐng)求的主體內(nèi)容等。HTTP 請(qǐng)求的響應(yīng)則包含狀態(tài)代碼(如 200 或 500),HTTP 頭和響應(yīng)的主體內(nèi)容等。雖然請(qǐng)求和響應(yīng)的交互模式很簡(jiǎn)單,但在實(shí)現(xiàn)中仍然有很多細(xì)節(jié)要考慮。OkHttp 會(huì)對(duì)收到的請(qǐng)求進(jìn)行一定的處理,比如增加額外的 HTTP 頭。同樣的,OkHttp 也可能在返回響應(yīng)之前對(duì)響應(yīng)做一些處理。例如,OkHttp 可以啟用 GZIP 支持。在發(fā)送實(shí)際的請(qǐng)求時(shí),OkHttp 會(huì)加上 HTTP 頭 Accept-Encoding。在接收到服務(wù)器的響應(yīng)之后,OkHttp 會(huì)先做解壓縮處理,再把結(jié)果返回。如果 HTTP 響應(yīng)的狀態(tài)代碼是重定向相關(guān)的,OkHttp 會(huì)自動(dòng)重定向到指定的 URL 來進(jìn)一步處理。OkHttp 也會(huì)處理用戶認(rèn)證相關(guān)的響應(yīng)。

如何使用
1.gradle

compile 'com.squareup.okhttp:okhttp:2.4.0'

2.Initial
建議只要new一個(gè)實(shí)體做全部的操作就行了

okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(30, TimeUnit.SECONDS);

3.GET
OkHttp 使用調(diào)用(Call)來對(duì)發(fā)送 HTTP 請(qǐng)求和獲取響應(yīng)的過程進(jìn)行抽象。下面代碼中給出了使用 OkHttp 發(fā)送 HTTP 請(qǐng)求的基本示例。首先創(chuàng)建一個(gè) OkHttpClient 類的對(duì)象,該對(duì)象是使用 OkHttp 的入口。接著要?jiǎng)?chuàng)建的是表示 HTTP 請(qǐng)求的 Request 對(duì)象。通過 Request.Builder 這個(gè)構(gòu)建幫助類可以快速的創(chuàng)建出 Request 對(duì)象。這里指定了 Request 的 url 為 http://www.baidu.com。接著通過 OkHttpClient 的 newCall 方法來從 Request 對(duì)象中創(chuàng)建一個(gè) Call 對(duì)象,再調(diào)用 execute 方法來執(zhí)行該調(diào)用,所得到的結(jié)果是表示 HTTP 響應(yīng)的 Response 對(duì)象。通過 Response 對(duì)象中的不同方法可以訪問響應(yīng)的不同內(nèi)容。如 headers 方法來獲取 HTTP 頭,body 方法來獲取到表示響應(yīng)主體內(nèi)容的 ResponseBody 對(duì)象。
OkHttp 最基本的 HTTP 請(qǐng)求

public class SyncGet {
  public static void main(String[] args) throws IOException {
  OkHttpClient client = new OkHttpClient();

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

  Response response = client.newCall(request).execute();
  if (!response.isSuccessful()) {
    throw new IOException("服務(wù)器端錯(cuò)誤: " + response);
  }

  Headers responseHeaders = response.headers();
  for (int i = 0; i < responseHeaders.size(); i++) {
    System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
  }

  System.out.println(response.body().string());
  }
}

4.POST
有了上面GET的基礎(chǔ),我們直接順便來看POST:

builde Requestbody
RequestBody formBody = new FormEncodingBuilder()
  .add("name", "Cuber")
  .add("age", "26")
  .build();

Request request = new Request.Builder()
   .url(url)
   .post(RequestBody)
   .build();

5.Send
把上面build出來的Request帶進(jìn)來

Response response = client.newCall(request).execute();//如果response回傳是null, 就代表timeout或沒有網(wǎng)絡(luò)

或是你想使用Callback...
Response response = client.newCall(request).enqueue(new Callback() {

  @Override
  public void onFailure(Request request, IOException e) {
    //timeout或 沒有網(wǎng)絡(luò) 
    //注意!這里是backgroundThread
  }

  @Override
    public void onResponse(Response response) throws IOException {
    //成功
    //注意!這里是backgroundThread
  }
});

相關(guān)文章

  • android模擬實(shí)現(xiàn)航拍遙控

    android模擬實(shí)現(xiàn)航拍遙控

    這篇文章主要為大家詳細(xì)介紹了android模擬實(shí)現(xiàn)航拍遙控,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android中Shape的用法詳解

    Android中Shape的用法詳解

    工作中總是會(huì)用到shape去畫一些背景,每次都要去百度,但是很多都寫的很模糊或者屬性不是很全,所以今天自己總結(jié)了一下,給大家分享一下,自己以后也可以看
    2017-07-07
  • Android中ContextMenu用法實(shí)例

    Android中ContextMenu用法實(shí)例

    這篇文章主要介紹了Android中ContextMenu用法,實(shí)例分析了Android上下文菜單ContextMenu的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Kotlin Flow操作符及基本使用詳解

    Kotlin Flow操作符及基本使用詳解

    這篇文章主要為大家介紹了Kotlin Flow操作符及基本使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Android實(shí)現(xiàn)輪詢的三種方式

    Android實(shí)現(xiàn)輪詢的三種方式

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)輪詢的三種方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 解析Android ANR問題

    解析Android ANR問題

    ANR 的全稱是 Application No Responding,即應(yīng)用程序無響應(yīng),具體是一些特定的 Message (Key Dispatch、Broadcast、Service) 在應(yīng)用的UI線程(主線程)沒有在規(guī)定的時(shí)間內(nèi)處理完,進(jìn)而觸發(fā) ANR 異常
    2021-01-01
  • Android自定義實(shí)現(xiàn)BaseAdapter的普通實(shí)現(xiàn)

    Android自定義實(shí)現(xiàn)BaseAdapter的普通實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Android自定義實(shí)現(xiàn)BaseAdapter的普通實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2016-08-08
  • android中一些特殊字符(如:←↑→↓等箭頭符號(hào))的Unicode碼值

    android中一些特殊字符(如:←↑→↓等箭頭符號(hào))的Unicode碼值

    這篇文章主要介紹了android中一些特殊字符(如:←↑→↓等箭頭符號(hào))的Unicode碼值,需要的朋友可以參考下
    2017-03-03
  • Android使用Jsoup解析Html表格的方法

    Android使用Jsoup解析Html表格的方法

    這篇文章主要介紹了Android使用Jsoup解析Html表格的方法,涉及Android中Jsoup的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-12-12
  • Android獲取熱點(diǎn)主機(jī)ip和連接熱點(diǎn)手機(jī)ip的代碼

    Android獲取熱點(diǎn)主機(jī)ip和連接熱點(diǎn)手機(jī)ip的代碼

    這篇文章主要介紹了Android獲取熱點(diǎn)主機(jī)ip和連接熱點(diǎn)手機(jī)ip的相關(guān)資料,需要的朋友可以參考下
    2018-01-01

最新評(píng)論

凭祥市| 扶绥县| 依兰县| 金寨县| 巴里| 绵阳市| 贵阳市| 临沂市| 神木县| 莆田市| 甘孜县| 建平县| 桃江县| 英超| 福建省| 宜州市| 永宁县| 磴口县| 诸城市| 苗栗市| 天台县| 兴国县| 攀枝花市| 桦南县| 桓台县| 会宁县| 靖安县| 浦县| 龙里县| 广河县| 望都县| 集贤县| 武义县| 柳州市| 壤塘县| 屏山县| 涞水县| 麦盖提县| 大石桥市| 丰镇市| 博野县|