android網路操作使用匯總(http)

來源:互聯網
上載者:User

標籤:

Android是作為智能手機的作業系統,我們開發的應用,大多數也都須要串連網路,通過網路發送資料、擷取資料,因此作為一個應用開發人員必須熟悉怎麼進行網路訪問與串連。

通常android中進行網路連接通常是使用scoket或者http,http是最多的情況。這裡,我來總結下。怎麼進行http網路訪問操作。

android是採用java語言進行開發的,android的包中包括java的URLConnection和apache 的httpclient,因此我們能夠使用這兩個工具進行網路連接和操作。同一時候。為了控制是否同意程式串連網路,我們開發應用時,須要在Manifest檔案裡配置申請網路連接的許可權,代碼例如以下。

<uses-permission android:name="android.permission.INTERNET"/>
使用URLConnection串連網路

URLConnection為java.net包中提供的網路訪問。支援http,https,ftp等。進行http串連時。使用HttpURLConnection就可以。示範範例代碼例如以下:

URL url = new URL("http://www.android.com/");HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();try {    InputStream in = new BufferedInputStream(urlConnection.getInputStream());    readStream(in);   //該方法是我們自己寫的,從流中取資料儲存到本地。實現從網路擷取資料。

finally { urlConnection.disconnect();}

向server提交資料時,須要採用POST傳輸

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();try {    urlConnection.setDoOutput(true);    //設定能夠上傳資料    urlConnection.setChunkedStreamingMode(0);    OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());    writeStream(out);   //該方法時我們自己寫的。向輸出資料流中寫資料,實現資料上傳。    InputStream in = new BufferedInputStream(urlConnection.getInputStream());    readStream(in);finally {    urlConnection.disconnect();}

很多其它用法和函數請查看:http://developer.android.com/reference/java/net/HttpURLConnection.html

同一時候HttpsURLConnection的用法請查看:http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html

使用HttpClient

這個呢,我們也能夠使用AndroidHttpClient頁能夠使用apache預設的DeafultHttpClient,兩者之間只常見Client不同,其它都一樣

建立AndroidHttpClient

AndroidHttpClient httpClient = AndroidHttpClient.newInstance("user-agent");

建立DefaultHttpClient

HttpClient client = new DefaultHttpClient();

GET請求

HttpGet getRequest = new HttpGet("http://blog.isming.me");try {      HttpResponse response = httpClient.execute(getMethod); //發起GET請求      Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //擷取響應碼      Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//擷取server響應內容  } catch (ClientProtocolException e) {      // TODO Auto-generated catch block      e.printStackTrace();  } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();  }

發起POST請求:

//先將要傳的資料放入List  params = new LinkedList<BasicNameValuePair>();  params.add(new BasicNameValuePair("param1", "Post方法"));  params.add(new BasicNameValuePair("param2", "第二個參數"));  try {      HttpPost postMethod = new HttpPost(baseUrl);      postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中      HttpResponse response = httpClient.execute(postMethod); //運行POST方法      Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //擷取響應碼      Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //擷取響應內容  } catch (UnsupportedEncodingException e) {      // TODO Auto-generated catch block      e.printStackTrace();  } catch (ClientProtocolException e) {      // TODO Auto-generated catch block      e.printStackTrace();  } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();  }
說明

從上面看到,使用HttpClient更加方便,明了。

只是Android官方給我們的文檔說明是建議android2.2及下面版本號碼建議使用HttpClient,android2.3及以上版本號碼建議使用HttpURLConnection。

原因是HttpURLConnection時一個輕量級的Httpclient,提供的API比較簡單,方便擴充,可是在2.2及曾經版本號碼中,這個API存在一些bug。在2.3的版本號碼中,給改動了。

而HttpClient儘管穩定,bug少,可是其提供的API非常多,進行升級和擴充不方便,android團隊在提升和最佳化其方面的積極性不高。

因此,在Android2.2版本號碼曾經。使用HttpClient時最好的選擇。
Android2.3版本號碼及以後,使用HttpURLConnection時最佳選擇。

架構

網路連接是耗時的操作。通常我們不會將其放在UI線程操作。會編寫非同步線程,將其放在後台線程運行(非同步線程操作看這裡)。

而網上有一些線程的網路操作架構,能夠降低我們的工作量,同一時候我們自己寫的好,可能非常多異常處理之類的。沒有其向的更加全面。

有輕量的android-async-http
Google官方的volley
Square提供的Retrofit

這個能夠依據自己項目的須要選擇不同的架構,有空我來寫寫volley的使用(PS:網上已經有用法了。自己百度去),另外兩個我的串連中已經有用法了。

ok,完畢!


寫的東西不少。可是介紹的不夠具體。

假設不清楚的。歡迎與我交流

原文地址:http://blog.isming.me/blog/2014/05/11/use-network-in-android/,歡迎轉載,轉載請註明出處!

著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。

android網路操作使用匯總(http)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.