【 Android官方文檔讀書筆記】串連網路

來源:互聯網
上載者:User

標籤:httpclient   網路   httpurlconnection   

     網路連接時應用的最基本的功能之一,Android系統對網路連接進行了封裝,使得開發人員能夠更快的給應用增加網路功能。大多數網路連接的Android應用使用HTTP發送和接受資料,Android包括兩個HTTP用戶端:HttpURLConnection和Apache HttpClient。開發人員可以使用這兩個用戶端中的任意一個去完成網路連接。

    

   1, 網路連接的基本步驟:

(1)增加許可權:manifest檔案中必須包含以下許可權

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

(2)檢查網路狀態,利用ConnectivityManager 的getActiveNetworkInfo()和isConnected()方法執行檢查。如下:

  ConnectivityManager connMgr = (ConnectivityManager) 

        getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

    if (networkInfo != null && networkInfo.isConnected()) {

        // 擷取資料

    } else {

        // 顯示錯誤

    }

 

(3)在獨立線程中執行網路連接:網路操作涉及不可預知的延遲,為了防止不良的使用者體驗,通常的做法是從UI中獨立出線程去執行網路連接操作。

 

(4)串連並下載資料,以HttpURLConnection

        URL url = new URL(myurl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        conn.connect();
        int response = conn.getResponseCode();  
        is = conn.getInputStream();


(5)流對象轉換為字串對象 

    Reader reader = null;
    reader = new InputStreamReader(stream, "UTF-8");        
    char[] buffer = new char[len];
    reader.read(buffer);


2,HttpClient與HttpURLConnection的對比。

   HttpClient與HttpURLConnection都支援HTTPS,流上傳和下載, 可配置的逾時,IPv6以及串連池。因此兩個都可以完成基本的網路操作。

   HttpClient是Apache開源組織提供的一個開源的項目,Android把它整合了進去。擁有眾多的Api,實現比較穩定,bug少。但同時也由於HttpClient的API數量過多,使得開發人員很難在不破壞相容性的情況下對它進行升級和擴充,所以目前Android團隊在提升和最佳化HttpClient方面的工作態度並不積極。


   HttpURLConnection是一種多用途、輕量級的HTTP用戶端。他的Api比較簡單,開發人員比較容易使用以及對它進行擴充。但缺點是Android2.3之前的版本存在一些Bug,如:對一個可讀的InputStream調用close()方法時,就有可能會導致串連池失效等。Android2.3系統對這些問題進行了修複,並增加了一些HTTPS方面的改進。在Android 4.0版本中,又添加了一些響應的緩衝機制,而且Google團隊會持續去對HttpURLConnection進行最佳化。


   一般建議2.3之前的系統使用HttpClient,而2.3及其之後的版本使用HttpURLConnection。





【 Android官方文檔讀書筆記】串連網路

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.