Android網路編程 HttpClient Socket

來源:互聯網
上載者:User

Android網路編程 HttpClient Socket


目前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、關閉開啟流。

聯繫我們

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