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

使用OkHttp包在Android中進行HTTP頭處理的教程

 更新時間:2016年07月13日 16:32:32   作者:HYAHU  
HTTP頭部處理是HTTP網(wǎng)絡(luò)編程中的基本操作,安卓中使用OkHttp包(github.com/square/okhttp)進行相關(guān)操作當然也是得心應手,這里我們就來看一下使用OkHttp包在Android中進行HTTP頭處理的教程

HTTP 頭處理
HTTP 頭是 HTTP 請求和響應中的重要組成部分。在創(chuàng)建 HTTP 請求時需要設(shè)置一些 HTTP 頭。在得到 HTTP 的響應之后,也會需要對其中包含的 HTTP 頭進行解析。從代碼的角度來說,HTTP 頭的數(shù)據(jù)結(jié)構(gòu)是 Map<String, List<String>>類型。也就是說,對于每個 HTTP 頭,可能有多個值。但是大部分 HTTP 頭都只有一個值,只有少部分 HTTP 頭允許多個值。OkHttp 采用了簡單的方式來區(qū)分這兩種類型,使得對 HTTP 頭的使用更加簡單。
在設(shè)置 HTTP 頭時,使用 header(name, value) 方法來設(shè)置 HTTP 頭的唯一值。對同一個 HTTP 頭,多次調(diào)用該方法會覆蓋之前設(shè)置的值。使用 addHeader(name, value) 方法來為 HTTP 頭添加新的值。在讀取 HTTP 頭時,使用 header(name) 方法來讀取 HTTP 頭的最近出現(xiàn)的值。如果該 HTTP 頭只有單個值,則返回該值;如果有多個值,則返回最后一個值。使用 headers(name) 方法來讀取 HTTP 頭的所有值。
下面的代碼中使用 header 方法設(shè)置了 User-Agent 頭的值,并添加了一個 Accept 頭的值。在進行解析時,通過 header 方法來獲取 Server 頭的單個值,通過 headers 方法來獲取 Set-Cookie 頭的所有值。

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

  Request request = new Request.Builder()
      .url("http://www.baidu.com")
      .header("User-Agent", "My super agent")
      .addHeader("Accept", "text/html")
      .build();

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

  System.out.println(response.header("Server"));
  System.out.println(response.headers("Set-Cookie"));
  }
}


Synchronous Get(同步 GET)
下載一個文件,以字符串的形式打印出他的頭部信息,打印出響應數(shù)據(jù)體信息。

String() 方法作為一些小文件的響應數(shù)據(jù)體是非常方便和高效的。但是如果針對一些大文件的下載(大于 1MB 文件),盡量避免使用 String() 方法因為他會將整個文本加載到內(nèi)存中。針對這種例子優(yōu)先選擇的解決方案是將數(shù)據(jù)體作為一個數(shù)據(jù)流來處理。

 private final OkHttpClient client = new OkHttpClient();

 public void run() throws Exception {
  Request request = new Request.Builder()
    .url("http://publicobject.com/helloworld.txt")
    .build();

  Response response = client.newCall(request).execute();
  if (!response.isSuccessful()) throw new IOException("Unexpected code " + 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());
 }

Asynchronous Get(異步 GET)
在工作線程中進行下載任務,并且在響應到達的時候采用回調(diào)的方式通知。這個回調(diào)會等待響應信息頭準備好之后發(fā)送,讀取這個響應頭信息仍然會阻塞。目前的 OKHttp 不支持異步的 APIS 來接收處理部分的響應體。

private final OkHttpClient client = new OkHttpClient();

 public void run() throws Exception {
  Request request = new Request.Builder()
    .url("http://publicobject.com/helloworld.txt")
    .build();

  client.newCall(request).enqueue(new Callback() {
   @Override public void onFailure(Request request, IOException throwable) {
    throwable.printStackTrace();
   }

   @Override public void onResponse(Response response) throws IOException {
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + 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());
   }
  });
 }

 

相關(guān)文章

  • Android okhttp3.0忽略https證書的方法

    Android okhttp3.0忽略https證書的方法

    這篇文章主要介紹了 Android okhttp3.0忽略https證書的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Android識別預裝的第三方App方法實例

    Android識別預裝的第三方App方法實例

    這篇文章主要給大家介紹了關(guān)于Android如何識別預裝的第三方App的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2019-01-01
  • Android自定義LocationMarker的實現(xiàn)詳解

    Android自定義LocationMarker的實現(xiàn)詳解

    這篇文章主要為大家詳細介紹一個比較簡單的東西:自定義繪制Marker 其實就是自定義view, 跟軌跡沒太多關(guān)聯(lián),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-02-02
  • Android自定義View實現(xiàn)自動轉(zhuǎn)圈效果

    Android自定義View實現(xiàn)自動轉(zhuǎn)圈效果

    這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)自動轉(zhuǎn)圈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android自定義屬性 format的深入解析

    Android自定義屬性 format的深入解析

    以下是對Android中的自定義屬性format進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-07-07
  • Android高仿IOS 滾輪選擇控件

    Android高仿IOS 滾輪選擇控件

    這篇文章主要為大家詳細介紹了Android 高仿IOS滾輪選擇控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android實現(xiàn)環(huán)信修改頭像和昵稱

    Android實現(xiàn)環(huán)信修改頭像和昵稱

    這篇文章主要為大家詳細介紹了Android實現(xiàn)環(huán)信修改頭像和昵稱,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Android實現(xiàn)層疊卡片式banner

    Android實現(xiàn)層疊卡片式banner

    這篇文章主要為大家詳細介紹了Android實現(xiàn)層疊卡片式banner,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android手勢密碼--設(shè)置和校驗功能的實現(xiàn)代碼

    Android手勢密碼--設(shè)置和校驗功能的實現(xiàn)代碼

    這篇文章主要介紹了Android手勢密碼--設(shè)置和校驗功能的實現(xiàn)代碼,非常不錯,具有一定的參考校驗價值,需要的朋友可以參考下
    2018-05-05
  • Android實現(xiàn)3D推拉門式滑動菜單源碼解析

    Android實現(xiàn)3D推拉門式滑動菜單源碼解析

    這篇文章主要為大家詳細解析了Android實現(xiàn)3D推拉門式滑動菜單源碼以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
    2017-11-11

最新評論