Android網路編程 HttpClient Socket

來源:互聯網
上載者:User

標籤:android



目前Android平台有3中網路通訊介面:

1、java.net.*(標準的java介面):URLConnection/HttpURLConnection類。

2、org.apache(Apache介面):HttpClient介面

3、Android.net(Android網路介面):通過對Apache的HttpClient介面的封裝來實現的一個Http編程介面。

一、標準的java介面:

 通過Http請求一般有兩種方式:get與post

 get方式:get請求可以擷取靜態頁面,也可以把參數放到URL字串之後,傳遞到伺服器。

 post與get的不同之處在於,post是項參數放在http請求資料中的。

 標準java介面下的網路通訊需要藉助於HttpURLConnection抽象類別,該類繼承自URLConnection抽象類別。

 由於HttpURLConnection和URLConnection都是抽象類別,無法執行個體化,其對象通過openConnection方法獲得。

 建立一個HttpURLConnection串連的代碼如下:

 URL url = new URL("http://www.google.com");
 
 HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();

 openConnection方法只建立URLConnection或HttpURLConnection執行個體,但並不進行真正的串連操作,

 並且每次openConnection之後都會建立一個新的執行個體。

 如下是一些屬性設定:

 connection.setDoOutput(true) //設定輸入輸出資料流

 connection.setDoInput(true);

 佈建要求方式

 connection.setRequestMethod("POST");
 connection.setUseCaches(false)//設定post請求不能使用緩衝

 connection.disconnection();//釋放串連。

二、Apache介面:HttpClient介面

 HttpClient介面是對java.net介面做了一層封裝,更適合Android開發連網應用。

 擷取HttpClient的方式:

 HttpClient client = new DefaultHttpClient(); //DefaultHttpClient是預設的http用戶端。通它可以建立一個HTTP串連。

 HttpResponse是一個Http串連響應,當執行一個HTTP請求後就會返回一個HttpResponse,可以通過他來獲得一些響應資訊。

 HttpResponse httpResponse = client.execute(httpRequest);

 執行HttpClient時需要傳入請求方式:get、post

 get:HttpGet httpRequest = new HttpGet(url);

 psot:HttpPost httpRequest = new HttpPost(url);

 post方式需要將請求參數儲存到NameValuePair中。
 
 if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //成功 }

 
Socket通訊:

 Socket有兩種主要的操作方式:連線導向的和不需連線的。

 連線導向的操作方式(使用TCP協議):就象一部電台,必須建立一個串連和一個呼叫

 優點:安全可靠。

 確定:傳輸效率低。

 不需連線的操作方式(UDP協議):就像郵件投遞,沒有保證。

 優點:傳輸效率高。

 確定:可靠性差。

 Socket編程原理:

 通過使用java.net包中提供的兩個類:Socket和ServerSocket:分別用來表示雙向串連的用戶端和伺服器。

 用戶端: Socket:Socket socket= newSocket(IP,port);//參數為伺服器的IP和連接埠號碼。

 使用Socket建立用戶端的步驟如下:

 1、通過IP地址和連接埠執行個體化Socket,請求串連伺服器。

 2、擷取Socket上的流以進行讀寫。

 3、把流封裝進BufferReader/PrintWriter的執行個體

 4、對Socket進行讀寫

 5、關閉開啟的流。

 伺服器: ServerSocket server = new ServerSocket(port);//伺服器的連接埠。

 使用ServerSocket建立伺服器步驟如下:

 1、指定連接埠執行個體化一個ServerSocket

 2、調用ServerSocket的accept()方法以在等待期間造成阻塞。

 3、擷取位於該底層Socket的流已進行讀寫操作

 4、將資料封裝成流

 5、對Socket進行讀寫

 6、關閉開啟流。

Android網路編程 HttpClient Socket

聯繫我們

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