C# get post之 get 方式

1.C# get post之 get 方式。

get 方式通過在網絡地址附加參數來完成數據的提交,比如在地址 http://www.google.com/webhp?hl=zh-CN 中,前面部分 http://www.google.com/webhp 表示數據提交的網址,後面部分 hl=zh-CN 表示附加的參數,其中 hl 表示一個鍵(key), zh-CN 表示這個鍵對應的值(value)。程序代碼如下:

1.            HttpWebRequest req = (HttpWebRequest) 
HttpWebRequest.Create( 
"http://www.google.com/webhp?hl=zh-CN" );  

2.            req.Method = "GET";  

3.            using (WebResponse wr = req.GetResponse())  

4.            {  

5.            //在這裏對接收到的頁面內容進行處理  

6.            }  

2.C# get post之post方式。

post方式通過在頁面內容中填寫參數的方法來完成數據的提交,參數的格式和 get 方式一樣,是類似於 hl=zh-CN&newwindow=1 這樣的結構。程序代碼如下:

7.            string param = "hl=zh-CN&newwindow=1";  

8.            byte[] bs = Encoding.ASCII.GetBytes(param);  

9.            HttpWebRequest req = (HttpWebRequest)
HttpWebRequest.Create( 
"http://www.google.com/intl/zh-CN/" );  

10.        req.Method = "POST";  

11.        req.ContentType = "application/x-www-form-urlencoded";  

12.        req.ContentLength = bs.Length;  

13.        using (Stream reqStream = req.GetRequestStream())  

14.        {  

15.        reqStream.Write(bs, 0, bs.Length);  

16.        }  

17.        using (WebResponse wr = req.GetResponse())  

18.        {  

19.        //在這裏對接收到的頁面內容進行處理  

20.        }  

在上面的代碼中,我們訪問了 www.google.com 的網址,分別以 get 和post方式提交了數據,並接收了返回的頁面內容。然而,如果提交的參數中含有中文,那麼這樣的處理是不夠的,需要對其進行編碼,讓對方網站能夠識別。

3. C# get post之使用 get 方式提交中文數據。

get 方式通過在網絡地址中附加參數來完成數據提交,對於中文的編碼,常用的有 gb2312 和 utf8 兩種,用 gb2312 方式編碼訪問的程序代碼如下:

21.        Encoding myEncoding = Encoding.GetEncoding("gb2312");  

22.        string address = "http://www.baidu.com/s?" +
HttpUtility.UrlEncode(
"參數一", myEncoding)
"=" + HttpUtility.UrlEncode("值一", myEncoding);  

23.        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);  

24.        req.Method = "GET";  

25.        using (WebResponse wr = req.GetResponse())  

26.        {  

27.        //在這裏對接收到的頁面內容進行處理  

28.        

在上面的程序代碼中,我們以 get 方式訪問了網址 http://www.baidu.com/s ,傳遞了參數“參數一=值一”,由於無法告知對方提交數據的編碼類型,所以編碼方式要以對方的網站爲標準。常見的網站中, www.baidu.com (百度)的編碼方式是 gb2312, www.google.com (谷歌)的編碼方式是 utf8。

4. C# get post之使用post方式提交中文數據。

post方式通過在頁面內容中填寫參數的方法來完成數據的提交,由於提交的參數中可以說明使用的編碼方式,所以理論上能獲得更大的兼容性。用 gb2312 方式編碼訪問的程序代碼如下:

29.        Encoding myEncoding = Encoding.GetEncoding("gb2312");  

30.        string param = HttpUtility.UrlEncode("參數一", myEncoding) + "=" + 
HttpUtility.UrlEncode(
"值一", myEncoding) + "&" +
HttpUtility.UrlEncode(
"參數二", myEncoding) + "=" 
+ HttpUtility.UrlEncode(
"值二", myEncoding);  

31.        byte[] postBytes = Encoding.ASCII.GetBytes(param);  

32.        HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create
"http://www.baidu.com/s" );  

33.        req.Method = "POST";  

34.        req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";  

35.        req.ContentLength = postBytes.Length;  

36.        using (Stream reqStream = req.GetRequestStream())  

37.        {  

38.        reqStream.Write(bs, 0, bs.Length);  

39.        }  

40.        using (WebResponse wr = req.GetResponse())  

41.        {  

42.        //在這裏對接收到的頁面內容進行處理  

43.        

從上面的代碼可以看出,post中文數據的時候,先使用 UrlEncode 方法將中文字符轉換爲編碼後的 ASCII 碼,然後提交到服務器,提交的時候可以說明編碼的方式,用來使對方服務器能夠正確的解析。

以上列出了客戶端程序使用 HTTP 協議與服務器交互的情況,常用的是 get 和post方式。現在流行的 WebService 也是通過 HTTP 協議來交互的,使用的是post方法。與以上稍有所不同的是, WebService 提交的數據內容和接收到的數據內容都是使用了 XML 方式編碼。所以, HttpWebRequest 也可以使用在調用 WebService 的情況下。

以上就是對C# get post方法的簡單介紹。

 

------------------------------------------------------------------------------------------

 

C#中GET和POST的簡單區別

GET和POST是最基本常用的,表單提交中get和post方式的區別歸納如下幾點:

  • GET是從服務器上獲取數據,POST是向服務器傳送數據。
  • GET 是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,例如(url=asp.aspx?id=1)在URL中可以看到。POST是通過HTTP POST機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
  • 對於GET方式,服務器端用Request.QueryString獲取變量的值,對於POST方式,服務器端用Request.Form獲取提交的數據。
  • GET傳送的數據量較小,不能大於2KB(這主要是因爲受URL長度限制)。POST傳送的數據量較大,一般被默認爲不受限制。但理論上,限制取決於服務器的處理能力。
  • GET 安全性較低,POST安全性較高。因爲GET在傳輸過程,數據被放在請求的URL中,而如今現有的很多服務器、代理服務器或者用戶代理都會將請求URL記 錄到日誌文件中,然後放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數據,一些系統內部消息將會一 同顯示在用戶面前。POST的所有操作對用戶來說都是不可見的。
  • 在FORM提交的時候,如果不指定Method,則默認爲 GET請求(.net默認是POST),Form中提交的數據將會附加在url之後,以?分開與url分開。字母數字字符原樣發送,但空格轉換爲“+” 號,其它符號轉換爲%XX,其中XX爲該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;GET方式提交的數據最多只能有 2048字節,而POST則沒有此限制。POST傳遞的參數在doc裏,也就http協議所傳遞的文本,接受時再解析參數部分。獲得參數。一般用POST 比較好。POST提交數據是隱式的,GET是通過在url裏面傳遞的,用來傳遞一些不需要保密的數據,GET是通過在URL裏傳遞參數,POST不是。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章