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

首頁 > 網站 > 建站經驗 > 正文

Android開發實現_HttpClient工具類

2019-11-02 15:17:22
字體:
來源:轉載
供稿:網友

   在Android開發中我們經常會用到網絡連接功能與服務器進行數據的交互,為此Android的SDK提供了Apache的HttpClient來方便我們使用各種Http服務。你可以把HttpClient想象成一個瀏覽器,通過它的API我們可以很方便的發出GET,POST請求(當然它的功能遠不止這些)。

  比如你只需以下幾行代碼就能發出一個簡單的GET請求并打印響應結果:

  try {

  // 創建一個默認的HttpClient

  HttpClient httpclient = new

搞笑內涵段子[www.62-6.com/1/gaoxiaoduanzi/]
DefaultHttpClient();

  // 創建一個GET請求

  HttpGet request = new HttpGet("www.google.com");

  // 發送GET請求,并將響應內容轉換成字符串

  String response = httpclient.execute(request, new BasicResponseHandler());

  Log.v("response text", response);

  } catch (ClientProtocolException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  為什么要使用單例HttpClient?

  這只是一段演示代碼,實際的項目中的請求與響應處理會復雜一些,并且還要考慮到代碼的容錯性,但是這并不是本篇的重點。注意代碼的第三行:

  HttpClient httpclient = new DefaultHttpClient();

  在發出HTTP請求前,我們先創建了一個HttpClient對象。那么,在實際項目中,我們很可能在多處需要進行HTTP通信,這時候我們不需要為每個請求都創建一個新的HttpClient。因為之前已經提到,HttpClient就像一個小型的瀏覽器,對于整個應用,我們只需要一個HttpClient就夠了。看到這里,一定有人心里想,這有什么難的,用單例啊!!就像這樣:

  public class CustomerHttpClient {

  private static HttpClient customerHttpClient;

  private CustomerHttpClient() {

  }

  public static HttpClient getHttpClient() {

  if(null == customerHttpClient) {

  customerHttpClient = new DefaultHttpClient();

  }

  return customerHttpClient;

  }

  }

  多線程!試想,現在我們的應用程序使用同一個HttpClient來管理所有的Http請求,一旦出現并發請求,那么一定會出現多線程的問題。這就好像我們的瀏覽器只有一個標簽頁卻有多個用戶,A要上google,B要上baidu,這時瀏覽器就會忙不過來了。幸運的是,HttpClient提供了創建線程安全對象的API,幫助我們能很快地得到線程安全的“瀏覽器”。

  解決多線程問題

  public class CustomerHttpClient {

  private static final String CHARSET = HTTP.UTF_8;

  private static HttpClient customerHttpClient;

  private CustomerHttpClient() {

  }

  public static synchronized HttpClient getHttpClient() {

  if (null == customerHttpClient) {

  HttpParams params = new BasicHttpParams();

  // 設置一些基本參數

  HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);

  HttpProtocolParams.setContentCharset(params,

  CHARSET);

  HttpProtocolParams.setUseExpectContinue(params, true);

  HttpProtocolParams

  .setUserAgent(

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海林市| 德格县| 拉萨市| 赤峰市| 营山县| 福州市| 景宁| 无锡市| 墨江| 马公市| 调兵山市| 师宗县| 黄大仙区| 兰考县| 林西县| 剑川县| 同心县| 武隆县| 丹江口市| 庆城县| 蒙城县| 通化市| 泽州县| 和政县| 宁明县| 内丘县| 五河县| 嘉兴市| 沾益县| 昭通市| 阿拉善右旗| 徐水县| 台南市| 灌云县| 建始县| 嘉善县| 康定县| 凌源市| 玉树县| 讷河市| 颍上县|