国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中使用OkHttp包處理HTTP的get和post請求的方法

2019-12-12 06:01:49
字體:
來源:轉載
供稿:網友

概覽
http是現在主流應用使用的網絡請求方式, 用來交換數據和內容, 有效的使用HTTP可以使你的APP 變的更快和減少流量的使用
OkHttp 是一個很棒HTTP客戶端(GitHub主頁:https://github.com/square/okhttp):

  • 支持SPDY, 可以合并多個到同一個主機的請求
  • 使用連接池技術減少請求的延遲(如果SPDY是可用的話)
  • 使用GZIP壓縮減少傳輸的數據量
  • 緩存響應避免重復的網絡請求

當你的網絡出現擁擠的時候,就是OKHttp 大顯身手的時候, 它可以避免常見的網絡問題,如果你的服務是部署在不同的IP上面的,如果第一個連接失敗, OkHTtp會嘗試其他的連接. 這個對現在IPv4+IPv6 中常見的把服務冗余部署在不同的數據中心上.  OkHttp 將使用現在TLS特性(SNI ALPN) 來初始化新的連接. 如果握手失敗, 將切換到SLLv3

使用OkHttp很容易,   同時支持 異步阻塞請求和回調.
如果你使用OkHttp ,你不用重寫你的代碼,   okhttp-urlconnection模塊實現了 java.net.HttpURLConnection 中的API,  okhttp-apache模塊實現了HttpClient中的API


GET 請求
我們從最簡單的 Http 請求開始學起,首先需要獲取一個 OkHttpClient 對象,方法如下:

OkHttpClient mHttpClient = new OkHttpClient();

OkHttpClient 用于管理所有的請求,內部支持并發,所以我們不必每次請求都創建一個 OkHttpClient 對象,這是非常耗費資源的。接下來就是創建一個 Request 對象了,如下所示:

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

然后調用這個請求即可:

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());  }});

通過調用 newCall 方法傳入之前創建的 Request 對象,然后調用 enqueue() 方法開始異步請求,該方法需要傳入回調接口,用于響應成功和失敗的回調。
好了,就是這么簡單,運行程序,Logcat 中打印如下數據:

2016713102858678.jpg (1697×397)

沒錯,這就是百度返回的 html 代碼,我們看起來很吃力,但是瀏覽器就是根據這些代碼進行解析,然后將百度首頁顯示出來。
好了,最簡單的 http 請求已經完成了,實現這個功能大概有三步:
創建 OkHttpClient 對象
創建 Request 對象
將 Request 對象添加到 OkHttpClient 中,并傳入回調函數。


POST 請求
大家都知道 http 常用的請求分為 GET 和 POST 請求,剛才我們使用的明顯是一個 GET 請求,那么,如何發起一個 POST 請求呢?其實很簡單,在第二步中有一個 post 方法,就可以傳入請求參數。
首先,創建一個 RequestBody 對象,這里我們用它的一個子類 FormBody 創建一個表單數據參數,如下所示:

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

然后以此構建 Request 對象,如下所示:

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

調用 post() 方法,將創建的 RequestBody 對象傳入即可。開始請求與前面講的 GET 請求一樣。實現 POST 請求大概分四步:

  • 創建 OkHttpClient 對象
  • 創建 RequestBody 對象
  • 創建 Request 對象

將 Request 對象添加到 OkHttpClient 中,并傳入回調函數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旬阳县| 西盟| 嘉黎县| 东源县| 禄丰县| 京山县| 临夏市| 嘉峪关市| 沽源县| 丰都县| 神木县| 来凤县| 琼结县| 康保县| 京山县| 辽阳市| 大同市| 麻阳| 东光县| 永善县| 会泽县| 邵东县| 凤庆县| 深水埗区| 太白县| 凌海市| 海城市| 新密市| 屏山县| 三原县| 双牌县| 昭觉县| 芷江| 汉寿县| 明水县| 文化| 长春市| 长葛市| 拜泉县| 留坝县| 花莲县|