❶ android中發送網路請求的技術有哪些
Get方式:
[java] view plain
// Get方式請求
public static void requestByGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建一個URL對象
URL url = new URL(path);
// 打開一個HttpURLConnection連接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 設置連接超時時間
urlConn.setConnectTimeout(5 * 1000);
// 開始連接
urlConn.connect();
// 判斷請求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 獲取返回的數據
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_GET, "Get方式請求成功,返回數據如下:");
Log.i(TAG_GET, new String(data, "UTF-8"));
} else {
Log.i(TAG_GET, "Get方式請求失敗");
}
// 關閉連接
urlConn.disconnect();
}
Post方式:
[java] view plain
// Post方式請求
public static void requestByPost() throws Throwable {
String path = "https://reg.163.com/logins.jsp";
// 請求的參數轉換為byte數組
String params = "id=" + URLEncoder.encode("helloworld", "UTF-8")
+ "&pwd=" + URLEncoder.encode("android", "UTF-8");
byte[] postData = params.getBytes();
// 新建一個URL對象
URL url = new URL(path);
// 打開一個HttpURLConnection連接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 設置連接超時時間
urlConn.setConnectTimeout(5 * 1000);
// Post請求必須設置允許輸出
urlConn.setDoOutput(true);
// Post請求不能使用緩存
urlConn.setUseCaches(false);
// 設置為Post請求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
// 配置請求Content-Type
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencode");
// 開始連接
urlConn.connect();
// 發送請求參數
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
dos.write(postData);
dos.flush();
dos.close();
// 判斷請求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 獲取返回的數據
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_POST, "Post請求方式成功,返回數據如下:");
Log.i(TAG_POST, new String(data, "UTF-8"));
} else {
Log.i(TAG_POST, "Post方式請求失敗");
}
}
org.apache.http包中的HttpGet和HttpPost類
Get方式:
[java] view plain
// HttpGet方式請求
public static void requestByHttpGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建HttpGet對象
HttpGet httpGet = new HttpGet(path);
// 獲取HttpClient對象
HttpClient httpClient = new DefaultHttpClient();
// 獲取HttpResponse實例
HttpResponse httpResp = httpClient.execute(httpGet);
// 判斷是夠請求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 獲取返回的數據
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpGet方式請求成功,返回數據如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpGet方式請求失敗");
}
}
Post方式:
[java] view plain
// HttpPost方式請求
public static void requestByHttpPost() throws Exception {
String path = "https://reg.163.com/logins.jsp";
// 新建HttpPost對象
HttpPost httpPost = new HttpPost(path);
// Post參數
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", "helloworld"));
params.add(new BasicNameValuePair("pwd", "android"));
// 設置字元集
HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);
// 設置參數實體
httpPost.setEntity(entity);
// 獲取HttpClient對象
HttpClient httpClient = new DefaultHttpClient();
// 獲取HttpResponse實例
HttpResponse httpResp = httpClient.execute(httpPost);
// 判斷是夠請求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 獲取返回的數據
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpPost方式請求成功,返回數據如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpPost方式請求失敗");
}
}
❷ 網路請求出錯什麼意思
一般來說是由於自己本身網路的問題造成網路請求失敗,但也存在伺服器出現問題,導致網路請求錯誤。
自身網路造成的網路請求錯誤非常常見,也非常容易解決。如果用戶當前的信號較差或者網速較差,這些都會出現網路請求錯誤的發生。建議用戶更換質量較好的網路,比如WiFi網路。或者去一些信號較好的地方解決該問題。
如果用戶的信號網速都沒有問題,但是依舊出現網路請求錯誤,可以看看用戶的移動數據有沒有打開,如果移動數據沒有打開也是會出現網路請求錯誤的。如果只是個別軟體出現網路請求錯誤,用戶可以在設置中看看有沒有禁止該軟體使用網路數據。禁用後的軟體也會出現網路請求錯誤。如果這個軟體沒有被禁用數據,但是依舊提示網路請求錯誤,這就表明該軟體的伺服器出現了問題,一般都是訪問量突然增大,造成伺服器崩潰顯示網路請求錯誤。
❸ 總是網路請求失敗是什麼原因
網路請求失敗是網路連接有問題、不能訪問互聯網的原因。
解決辦法:
1、使用其他手機或設備連接WiFi試試能否上網,排除WiFi本身問題。
2、重啟一下路由器,或者將路由器恢復一下出廠設置,然後重新撥號上網,並根據設置向導重新設置WiFi,或者更換新路由器再進行撥號連接上網。
(3)網路請求有哪些擴展閱讀:
由於引起網路速度慢的原因非常多,如網路環路、廣播風暴、流量佔用、P2P下載、病毒等等,在遭遇網速慢時,如何才能很快的找到問題根源呢,通過科來網路分析系統抓包分析,是一個較好的解決方法。
首先可以通過專家診斷視圖看是否有比較明顯的故障,如ARP掃描或欺騙;如果是比較隱性的故障信息(傳輸層或網路層),那麼可以在端點視圖下查看IP流量、網路連接、發送/接收數據包等是否有異常。
❹ HTTP請求里包括些什麼內容HTTP響應里包括些什麼內容
內容優點多。
暑假做協議分析的時候研究了一下。。
HTTP協議是我們網路中必不可少的重要協議。那麼下面我們就來對這方面的問題進行一下深入講解。那麼我們就針對GET方法實現HTTP協議的具體操作進行一下分析。HTTP協議用於在Internet上發送和接收消息?HTTP協議是一種請求-應答式的協議??客戶端發送一個請求,伺服器返回該請求的應答,所有的請求與應答都是HTTP包?HTTP協議使用可靠的TCP連接,默認埠是80?HTTP的第一個版本是HTTP/0.9,後來發展到了HTTP/1.0,現在最新的版本是HTTP/1.1?HTTP/1.1由RFC 2616 定義?
在HTTP中,Client/Server之間的會話總是由客戶端通過建立連接和發送HTTP請求包初始化,伺服器不會主動聯系客戶端或要求與客戶端建立連接?瀏覽器和伺服器都可以隨時中斷連接,例如,在瀏覽網頁時你可以隨時點擊「停止"按鈕中斷當前的文件下載過程,關閉與Web伺服器的HTTP連接?
1 HTTP請求包
HTTP請求包(GET?POST等請求方法)由三個部分構成,分別是:方法-URI-協議/版本,請求頭,請求正文?下面是一個HTTP協議請求包(GET)的例子:
1.GET /index.jsp HTTP/1.1
2.Accept-Language: zh-cn
3.Connection: Keep-Alive
4.Host: 192.168.0.106
5.Content-Length: 37
6.userName=new_andy&password=new_andy
請求包的第一行是方法-URI-協議/版本:
GET就是請求方法,根據HTTP標准,HTTP協議請求可以使用多種請求方法?HTTP 1.1支持七種請求方法:GET?POST?HEAD?OPTIONS?PUT?DELETE和TRACE等,常用的為請求方法是GET和POST?
/index.jsp表示URI?URI指定了要訪問的網路資源?HTTP/1.1是協議和協議的版本?
最後一行userName=new_andy&password=new_andy為正文,正文與HTTP頭部有一個空行(rn)分隔?這里需要說明的一點,其中Content-Length說明正文的長度,有的正文長度沒有在頭部說明,只是標明Transfer-Encoding: chunked?關於chunked類型的長度計算方法,見RFC 1626?
請求包的頭部還會包含許多有關客戶端環境和請求正文的有用信息,這里不再描述?
2 HTTP協議應答包
和HTTP請求包相似,由三個部分構成,分別是:協議-狀態代碼-描述,應答頭,應答正文?下面是一個HTTP應答的例子:
1.HTTP/1.1 200 OK
2.Server: Microsoft-IIS/4.0
3.Date: Mon, 3 Jan 2005 13:13:33 GMT
4.Content-Type: text/html
5.Last-Modified: Mon, 11 Jan 2004 13:23:42 GMT
6.Content-Length: 90
7.<html>
8.<head>
9.<title>解讀HTTP包示例</title></head><body>
10.Hello WORLD!
11.</body>
12.</html>
HTTP應答包的第一行類似於HTTP協議請求的第一行,表示所用的協議是HTTP 1.1,伺服器處理請求的狀態碼200?
應答頭也和請求頭一樣包含許多有用的信息,例如伺服器類型?日期時間?內容類型和長度等?應答的正文就是伺服器返回的HTML頁面?應答頭和正文之間也用CRLF分隔?
❺ iOS 網路請求有哪些方式
兩種請求方式GET,POST
兩種請求方式的比較
相同點:都能給伺服器傳輸數據
不同點:
1、給伺服器傳輸數據的方式:
GET:通過網址字元串。POST:通過data
2、傳輸數據的大小:GET:⽹址字元串最多255位元組。POST:使用NSData,容量超過1G
3、安全性:GET:所有傳輸給伺服器的數據,顯示在網址里,類似於密碼的明文輸入,直接可見。
POST:數據被轉成NSData(二進制數據),類似於密碼的密文輸⼊入,⽆無法直接讀取。
連接方式
同步:使用一個線程(主線程)完成所有的工作,效率低,當線程正在執行一個任務的時候無法執行另一個任務,所有如果使用同步進行網路數據的請求,那麼在該線程進行網路請求時,暫時無法響應用戶的點擊事件,用戶體驗極差
非同步:再開一個線程(子線程)去完成任務,此時,主線程依然可以監聽用戶的點擊事件,不會造成卡頓,用戶體驗較好
❻ http內容類型是什麼意思都包括哪些類型
HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出.(協議,算是全球定位!)
WWW的核心——HTTP協議
眾所周知,Internet的基本協議是TCP/IP協議,目前廣泛採用的FTP、Archie Gopher等是建立在TCP/IP協議之上的應用層協議,不同的協議對應著不同的應用。<BR> WWW伺服器使用的主要協議是HTTP協議,即超文體傳輸協議。由於HTTP協議支持的服務不限於WWW,還可以是其它服務,因而HTTP協議允許用戶在統一的界面下,採用不同的協議訪問不同的服務,如FTP、Archie、SMTP、NNTP等。另外,HTTP協議還可用於名字伺服器和分布式對象管理。
2.1 HTTP協議簡介
HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。
HTTP協議的主要特點可概括如下:
1.支持客戶/伺服器模式。
2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯系的類型不同。
由於HTTP協議簡單,使得HTTP伺服器的程序規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
2.2 HTTP協議的幾個重要概念
1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。
2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列並通過連接傳輸。
3.請求(Request):一個從客戶端到伺服器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號
4.響應(Response):一個從伺服器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。
5.資源(Resource):由URI標識的網路數據對象或服務。
6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。
7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。
8.用戶代理(User agent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。
9.伺服器(Server):一個接受連接並對請求返回信息的應用程序。
10.源伺服器(Origin server):是一個給定資源可以在其上駐留或被創建的伺服器。
11.代理(Proxy):一個中間程序,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。
代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。
12.網關(Gateway):一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。
網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。
13.通道(Tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬於HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。
14.緩存(Cache):反應信息的局域存儲。
2.3 HTTP協議的運作方式
HTTP協議是基於請求/響應範式的。一個客戶機與伺服器建立連接後,發送一個請求給伺服器,請求方式的格式為,統一資源標識符、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。伺服器接到請求後,給予相應的響應信息,其格式為一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括伺服器信息、實體信息和可能的內容。
許多HTTP通訊是由一個用戶代理初始化的並且包括一個申請在源伺服器上資源的請求。最簡單的情況可能是在用戶代理(UA)和源伺服器(O)之間通過一個單獨的連接來完成(見圖2-1)。
圖2-1
當一個或多個中介出現在請求/響應鏈中時,情況就變得復雜一些。中介由三種:代理(Proxy)、網關(Gateway)和通道(Tunnel)。一個代理根據URI的絕對格式來接受請求,重寫全部或部分消息,通過URI的標識把已格式化過的請求發送到伺服器。網關是一個接收代理,作為一些其它伺服器的上層,並且如果必須的話,可以把請求翻譯給下層的伺服器協議。一個通道作為不改變消息的兩個連接之間的中繼點。當通訊需要通過一個中介(例如:防火牆等)或者是中介不能識別消息的內容時,通道經常被使用。 圖2-2
上面的圖2-2表明了在用戶代理(UA)和源伺服器(O)之間有三個中介(A,B和C)。一個通過整個鏈的請求或響應消息必須經過四個連接段。這個區別是重要的,因為一些HTTP通訊選擇可能應用於最近的連接、沒有通道的鄰居,應用於鏈的終點或應用於沿鏈的所有連接。盡管圖2-2是線性的,每個參與者都可能從事多重的、並發的通訊。例如,B可能從許多客戶機接收請求而不通過A,並且/或者不通過C把請求送到A,在同時它還可能處理A的請求。
任何針對不作為通道的匯聚可能為處理請求啟用一個內部緩存。緩存的效果是請求/響應鏈被縮短,條件是沿鏈的參與者之一具有一個緩存的響應作用於那個請求。下圖說明結果鏈,其條件是針對一個未被UA或A加緩存的請求,B有一個經過C來自O的一個前期響應的緩存拷貝。
圖2-3
在Internet上,HTTP通訊通常發生在TCP/IP連接之上。預設埠是TCP 80,但其它的埠也是可用的。但這並不預示著HTTP協議在Internet或其它網路的其它協議之上才能完成。HTTP只預示著一個可靠的傳輸。
以上簡要介紹了HTTP協議的宏觀運作方式,下面介紹一下HTTP協議的內部操作過程。
首先,簡單介紹基於HTTP協議的客戶/伺服器模式的信息交換過程,如圖2-4所示,它分四個過程,建立連接、發送請求信息、發送響應信息、關閉連接。
圖2-4
在WWW中,「客戶」與「伺服器」是一個相對的概念,只存在於一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為伺服器。WWW伺服器運行時,一直在TCP80埠(WWW的預設埠)監聽,等待連接的出現。
下面,討論HTTP協議下客戶/伺服器模式中信息交換的實現。 1.建立連接 連接的建立是通過申請套接字(Socket)實現的。客戶打開一個套接字並把它約束在一個埠上,如果成功,就相當於建立了一個虛擬文件。以後就可以在該虛擬文件上寫數據並通過網路向外傳送。
2.發送請求
打開一個連接後,客戶機把請求消息送到伺服器的停留埠上,完成提出請求動作。
HTTP/1.0 請求消息的格式為:
請求消息=請求行(通用信息|請求頭|實體頭) CRLF[實體內容]
請求 行=方法 請求URL HTTP版本號 CRLF
方 法=GET|HEAD|POST|擴展方法
U R L=協議名稱+宿主名+目錄與文件名
請求行中的方法描述指定資源中應該執行的動作,常用的方法有GET、HEAD和POST。不同的請求對象對應GET的結果是不同的,對應關系如下:
對象 GET的結果
文件 文件的內容
程序 該程序的執行結果
資料庫查詢 查詢結果
HEAD——要求伺服器查找某對象的元信息,而不是對象本身。
POST——從客戶機向伺服器傳送數據,在要求伺服器和CGI做進一步處理時會用到POST方法。POST主要用於發送HTML文本中FORM的內容,讓CGI程序處理。
一個請求的例子為:
頭信息又稱為元信息,即信息的信息,利用元信息可以實現有條件的請求或應答 。
請求頭——告訴伺服器怎樣解釋本次請求,主要包括用戶可以接受的數據類型、壓縮方法和語言等。
實體頭——實體信息類型、長度、壓縮方法、最後一次修改時間、數據有效期等。
實體——請求或應答對象本身。
3.發送響應
伺服器在處理完客戶的請求之後,要向客戶機發送響應消息。
HTTP/1.0的響應消息格式如下:
響應消息=狀態行(通用信息頭|響應頭|實體頭) CRLF 〔實體內容〕
狀 態 行=HTTP版本號 狀態碼 原因敘述
狀態碼表示響應類型
1×× 保留
2×× 表示請求成功地接收
3×× 為完成請求客戶需進一步細化請求
4×× 客戶錯誤
5×× 伺服器錯誤
響應頭的信息包括:服務程序名,通知客戶請求的URL需要認證,請求的資源何時能使用。
4.關閉連接
客戶和伺服器雙方都可以通過關閉套接字來結束TCP/IP對話
❼ 網路請求中post和get方法的區別
1.Get是向伺服器發索取數據的一種請求;而Post是向伺服器提交數據的一種請求,要提交的數據位於信息頭後面的實體中。GET和POST只是發送機制不同,並不是一個取一個發!
2.對於GET,特定的瀏覽器和伺服器對URL的長度有限制。因此,在使用GET請求時,傳輸數據會受到URL長度的限制。
對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個伺服器會規定對POST提交數據大小進行限制,Apache、IIS都有各自的配置。
3.數據類型限制:
get:只允許ASCII字元類型;post沒有限制。
4.post傳輸比get方式安全,但不是絕對安全,否則就不會有https了。
❽ 一次完整的HTTP請求與響應涉及了哪些知識
域名解析 --> 發起TCP的3次握手 --> 建立TCP連接後發起http請求 --> 伺服器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶
❾ android網路請求的幾種方式有哪些有什麼不同
參考內容如下:
Android應用經常會和伺服器端交互,這就需要手機客戶端發送網路請求,下面介紹四種常用網路請求方式,我這邊是通過Android單元測試來完成這四種方法的,還不清楚Android的單元測試的同學們請看Android開發技巧總結中的Android單元測試的步驟一文。
java.net包中的HttpURLConnection類
Get方式:
// Get方式請求
public static void requestByGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建一個URL對象
URL url = new URL(path);
// 打開一個HttpURLConnection連接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 設置連接超時時間
urlConn.setConnectTimeout(5 * 1000);
// 開始連接
urlConn.connect();
// 判斷請求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 獲取返回的數據
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_GET, "Get方式請求成功,返回數據如下:");
Log.i(TAG_GET, new String(data, "UTF-8"));
} else {
Log.i(TAG_GET, "Get方式請求失敗");
}
// 關閉連接
urlConn.disconnect();
}
Post方式:
// Post方式請求
public static void requestByPost() throws Throwable {
String path = "https://reg.163.com/logins.jsp";
// 請求的參數轉換為byte數組
String params = "id=" + URLEncoder.encode("helloworld", "UTF-8")
+ "&pwd=" + URLEncoder.encode("android", "UTF-8");
byte[] postData = params.getBytes();
// 新建一個URL對象
URL url = new URL(path);
// 打開一個HttpURLConnection連接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 設置連接超時時間
urlConn.setConnectTimeout(5 * 1000);
// Post請求必須設置允許輸出
urlConn.setDoOutput(true);
// Post請求不能使用緩存
urlConn.setUseCaches(false);
// 設置為Post請求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
// 配置請求Content-Type
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencode");
// 開始連接
urlConn.connect();
// 發送請求參數
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
dos.write(postData);
dos.flush();
dos.close();
// 判斷請求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 獲取返回的數據
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_POST, "Post請求方式成功,返回數據如下:");
Log.i(TAG_POST, new String(data, "UTF-8"));
} else {
Log.i(TAG_POST, "Post方式請求失敗");
}
}
org.apache.http包中的HttpGet和HttpPost類
Get方式:
// HttpGet方式請求
public static void requestByHttpGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建HttpGet對象
HttpGet httpGet = new HttpGet(path);
// 獲取HttpClient對象
HttpClient httpClient = new DefaultHttpClient();
// 獲取HttpResponse實例
HttpResponse httpResp = httpClient.execute(httpGet);
// 判斷是夠請求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 獲取返回的數據
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpGet方式請求成功,返回數據如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpGet方式請求失敗");
}
}
Post方式:
// HttpPost方式請求
public static void requestByHttpPost() throws Exception {
String path = "https://reg.163.com/logins.jsp";
// 新建HttpPost對象
HttpPost httpPost = new HttpPost(path);
// Post參數
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", "helloworld"));
params.add(new BasicNameValuePair("pwd", "android"));
// 設置字元集
HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);
// 設置參數實體
httpPost.setEntity(entity);
// 獲取HttpClient對象
HttpClient httpClient = new DefaultHttpClient();
// 獲取HttpResponse實例
HttpResponse httpResp = httpClient.execute(httpPost);
// 判斷是夠請求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 獲取返回的數據
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpPost方式請求成功,返回數據如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpPost方式請求失敗");
}
}
以上是一些部分代碼,測試的時候在測試類中運行對應的測試方法即可。