通有線網際網路一樣,移動網際網路也可以使用http通路網絡。在android中,針對http進行網絡通信的方法主要有兩種,一種是使用httpurlconnection實作;另一種是使用httpclient實作。下面分别進行介紹
1.使用httpurlconnection通路網絡
httpurlconnection位于java.net包中,用于發送http請求和擷取http響應。由于該類是抽象類,不能直接執行個體化對象,則需要使用url的openconnection()方法來獲得。例如,要建立一個http://www.baidu.com網站對應的httpurlconnection對象,可以使用下面的代碼:
url url=new url("http://www.baidu.com");
httpurlconnection urlconnection=(httpurlconnection)url.openconnection();
建立了httpurlconnection對象後,就可以使用該對象發送http請求了。http請求分為get請求和post請求。下面分别進行介紹。
a.發送get請求
使用httpurlconnection發送請求預設使用get。使用比較簡單,将需要傳遞的參數通過在url路徑後方加入"?參數名=參數值"進行傳遞(多個參數用"&"或","分隔),然後擷取流中的資料,并關閉連接配接即可。
下面通過一個具體的執行個體說明如何使用httpurlconnection發送get請求
功能:在編輯框中輸入資訊,點選“send”按鈕,就會将資訊發到伺服器端,且在用戶端的文字框控件中檢視。
界面:模拟發微網誌,上面是編輯框和發送按鈕,下面是從伺服器讀取的微網誌内容
res/layout/main.xml:
界面效果如圖
主界面:
mainactivity:
在安卓的配置檔案androidmanifest.xml中别忘記加入通路網絡的權限:
在javaee工作台(或myeclipse)中建立一個名為"wenxintest"的web應用,在index.jsp中寫下如下關鍵代碼:
接着将應用部署至tomcat,啟動tomcat進行測試。
用戶端測試結果如圖
證明資料已經由用戶端發至web應用,然後經由服務端處理後發回用戶端
b.發送post請求
由于采用get方式發送請求隻适合發送大小在1024個位元組以内的資料,是以當要發送的資料較大時,就需要使用post方式發送請求。
發送post請求,需要通過其setrequestmethod()方法進行指定。例如,建立一個http連接配接,并為該連接配接指定請求發送的方式為post,可以使用下面的代碼:
發送post請求要比發送get請求複雜一些,它通常需要通過httpurlconnection類以及其父類urlconnection提供的方法設定相關内容,常用的方法如表所示:
setdoinput(boolean newvalue)用于設定是否向連接配接中寫入資料,如果參數為true,表示寫入資料;否則不寫入資料
setdooutput(boolean newvalue)用于設定是否向連接配接中讀取資料,如果參數為true,表示寫入資料;否則不讀取資料
setusecaches(boolean newvalue)用于設定是否緩存資料,如果參數為true,表示緩存資料;否則不緩存資料
setinstancefollowredirects(boolean followredirects)用于設定是否應該自動執行http重定向,如果參數為true,表示自動執行;否則不自動執行
setrequestproperty(string field,string newvlaue)用于設定一般請求屬性,例如要設定内容類型為表單資料,可以進行以下設定:
setrequestproperty("content-type","applcation/x-www-form-urlencoded");
下面通過一個具體的執行個體來介紹如何使用httpurlconnection類發送請求
功能:在編輯框中輸入資訊和昵稱,點選“send”按鈕,就會将資訊發到伺服器端,且在用戶端的文字框控件中檢視。
界面:模拟發微網誌,上面是兩個編輯框和發送按鈕,下面是從伺服器讀取的微網誌内容
轉載請注明出處:http://blog.csdn.net/acmman/article/details/46414315