在android上傳送http請求的方式一般有兩種,httpurlconnection和httpclient:
第一:現在講一下httpurlconnection的用法。
1)首先需要獲取到httpurlconnection的例項,一般只需new 出乙個url物件,並傳入目標網路的位址,然後呼叫一下openconnection()方法即可,如下所示:
2)到了 httpurlconnection的例項之後,我們可以設定一下http請求所使用的方法。常用的方法主要有兩個,
get和post。get表示希望從伺服器那裡獲取資料,而post則表示提交資料給伺服器。寫法如下:
connection.setrequestmethod("get");
3)接下來就可以進行一些自由的定製了,比如設定連線超時,讀取超時的毫秒數,以及伺服器希望得到的一些訊息頭等。這部分內容根據自己的實際情況進行編寫,示例如下:
connection.setconnectiontimeout(8000);
connection.setreadtimeout(8000);
4)之後呼叫getinputstream()方法就可以獲取到伺服器返回的輸入流了,剩下的任務就是對輸入流進行讀取,如下所示:
inputstream in=connection.getinputstream();
最後可以呼叫disconnect()方法將這個http連線關閉掉,如下所示:
connection.disconnection();
只有ui和handler thread 自帶looper其他的需要這樣寫就可以把他們放在主線程中
new handler(looper.getmainlooper()).post(new runnable()
});
第二:現在講一下
httpclient的用法。
首先httpclient是apache提供的http網路訪問介面,從一開始的時候就被引入到android的api中。它可以
完成和httpurlconnection幾乎一模一樣的效果,但兩者的之間的用法卻有較大的差別,下面我們看看httpclient的用法。
1)我們要知道,httpclient是乙個介面,因此無法建立它的例項,通常情況下都會建立乙個defaulthttpclient的例項,如下所示:
2)接下來如果想要發起一條get請求,就可以建立乙個httpget物件,並傳入目標的網路位址,然後呼叫httpclient的execute()方法即可:
3)如果是發起一條post請求會比get稍複雜一點,我們需要建立乙個httppost物件,並傳入目標網路位址,並設定標題如下所示:
呼叫httppost的setentity()方法將構建好的urlencodedformentity傳入,如下所示:
接下來的操作就和httpget一樣了,呼叫httpclient的execute()方法,並將httppost物件傳入即可:
執行execute()方法之後會返回乙個httpresponse物件,伺服器所返回的所有資訊就會包含在這裡面。通常情況下我們都會先取出伺服器返回的狀態
碼,如果等於200就說明請求和響應都成功了,如下所示:
接下來在這個if判斷的內部取出服務返回的具體內容,可以呼叫getentity()方法獲取到乙個httpentity例項,然後再用
entityutils.tostring()這個靜態方法將httpentity轉化成字串即可,如下所示:
注意如果伺服器返回的資料是帶中文的,直接呼叫entityutils.tostring()方法進行轉換會有亂碼的情況出現,這個時候
只需要在轉換的時候將字符集指定成utf-8就可以了,如下所示:
string response=entityutils.tostring(entity,"utf-8");
使用HTTP協議訪問網路
new乙個url物件 url url new url 千萬不要用www.baidu.com,坑爹東西 呼叫openconnection 方法,得到httpurlconnection物件 對httpurlconnection物件設定模式,get 表示希望從伺服器那裡獲取資料,而 post 則表示希望提...
Android使用Http協議訪問網路
在android上傳送http請求的方式一般有兩種,httpurlconnection和httpclient。一 httpurlconnection 一般有以下步驟 先將字串位址傳入url物件,再用url物件開啟乙個httpurlconnection物件,然後對httpurlconnection物件...
網路 http協議
http hypertext transfer protocol 即超文字傳輸協議,現在基本上所有web專案都遵從http協議。目前絕大部分使用的都是http 1.1版本 1.0太老2.0仍在制訂中 url 就是我們俗稱的 urlencode和urldecode 等這樣的字元,已經被url當做特殊意...