標籤: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