Android學習筆記之網路介面(Http介面,Apache介面,Android介面)

來源:互聯網
上載者:User

目前Android平台有三種網路介面可以使用,他們分別是:java.net.*(標準Java介面),org.apache(Apache介面),和android.net.*(android網路介面)。

1 標準Java介面

java.net.*提供與連網有關的類,包括流和資料包通訊端、Internet協議、常見HTTP處理。

比如:建立URL以及URLConnection/HttpURLConnection對象,設定串連參數 ,串連到伺服器 ,向伺服器寫資料 ,從伺服器讀取資料
等通訊。
下面就是常見的使用java.net包的HTTP例子。

try {//定義地址URL url=new URL("http://www.google.com");//開啟串連HttpURLConnection http=(HttpURLConnection)url.openConnection();//得到串連狀態int nRC=http.getResponseCode();if(nRC==HttpURLConnection.HTTP_OK){//取得資料InputStream is = http.getInputStream();//處理資料}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}

 

注意:由於是串連網路,不免出現一些異常,所以必須處理這些異常。

 

2 Apache介面

Http協議可能是Internet使用的 最多,最重要的通訊協定了,越來越多的Java應用程式需要通過Http協議來訪問網路資源。雖然JDK的java.net包中已經提供了訪問Http協議的準系統,但是對於大部分應用程式來說,JDK庫提供的功能還遠遠不夠。這就需要Android提供的Apache HttpClient了。

Apache HttpClient 是一個開源項目,彌補了 java.net.* 靈活性不足的缺點,為用戶端的HTTP編程提供高效、最新、功能豐富的工具包支援。

Android 平台引入了 Apache HttpClient 的同時還提供了對它的一些封裝和擴充,例如設定預設的HTTP逾時和緩衝大小等。
早期的 Android 曾同時包括 CommonsHttpClient (org.apache.commons.httpclient.*) 和 HttpComponents  (org.apache.http.client.*),不過目前的版本 (1.5) 中開發人員只能使用後者,也就是說類似以下的一些類:

使用這部分介面的基本操作與 java.net.* 基本類似,主要包括: 建立 HttpClient 以及 GetMethod / PostMethod, HttpRequest 等對象 ,設定串連參數 ,執行 HTTP 操作 ,處理伺服器返回結果

//建立HttpClient//這裡使用DefaultHttpClient表示預設屬性HttpClient hc = new DefaultHttpClient();//HttpGet執行個體HttpGet get = new HttpGet("http://www.google.com");//串連try {HttpResponse rp = hc.execute(get);if(rp.getStatusLine().getStatusCode()==HttpStatus.SC_OK){InputStream is = rp.getEntity().getContent();//處理資料}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}

 

3 Android網路介面

android.net.* 實際上是通過對 Apache 的 HttpClient 的封裝來實現的一個 HTTP 編程介面,同時還提供了 HTTP 要求隊列管理,以及 HTTP 串連池管理,以提高並發請求情況下(如轉載網頁時)的處理效率,除此之外還有網路狀態監視等介面,訪問網路的Socket ,常用的Uri類以及有關WIFI相關的類。
以下是一個通過 AndroidHttpClient 訪問伺服器的最簡例子:

try {/**IP*/InetAddress inetAdderess = InetAddress.getByName("192.168.1.110");/**Port*/Socket client = new Socket(inetAdderess,61203,true);/**取得資料*/InputStream in = client.getInputStream();OutputStream out = client.getOutputStream();/**處理資料*/out.close();in.close();} catch (Exception e) {}

 

 

 

 

 

 

 

 

聯繫我們

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