C# HttpWebRequest提交數據方式學習之前我們先來看看什麼是HttpWebRequest它是 基類庫中的一個類在命名空間 SystemNet 下面用來使用戶通過HTTP協議和服務器交互
C# HttpWebRequest的作用
HttpWebRequest對HTTP協議進行了完整的封裝對HTTP協議中的 Header Content Cookie 都做了屬性和方法的支持很容易就能編寫出一個模擬浏覽器自動登錄的程序
C# HttpWebRequest提交數據方式
程序使用HTTP協議和服務器交互主要是進行數據的提交通常數據的提交是通過 GET 和 POST 兩種方式來完成下面對這兩種方式進行一下說明
C# HttpWebRequest提交數據方式 GET 方式
GET 方式通過在網絡地址附加參數來完成數據的提交比如在地址 CN 中前面部分 表示數據提交的網址後面部分 hl=zhCN 表示附加的參數其中 hl 表示一個鍵(key) zhCN 表示這個鍵對應的值(value)程序代碼如下
HttpWebRequest req = (HttpWebRequest) HttpWebRequestCreate( CN );
reqMethod = GET;
using (WebResponse wr = reqGetResponse())
{
//在這裡對接收到的頁面內容進行處理
}
C# HttpWebRequest提交數據方式 POST 方式
POST 方式通過在頁面內容中填寫參數的方法來完成數據的提交參數的格式和 GET 方式一樣是類似於 hl=zhCN&newwindow= 這樣的結構程序代碼如下
string param = hl=zhCN&newwindow=;
byte[] bs = EncodingASCIIGetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequestCreate( CN/ );
reqMethod = POST;
reqContentType = application/xwwwformurlencoded;
reqContentLength = bsLength;
using (Stream reqStream = reqGetRequestStream())
{
reqStreamWrite(bs bsLength);
}
using (WebResponse wr = reqGetResponse())
{
//在這裡對接收到的頁面內容進行處理
}
在上面的代碼中我們訪問了 的網址分別以 GET 和 POST 方式提交了數據並接收了返回的頁面內容然而如果提交的參數中含有中文那麼這樣的處理是不夠的需要對其進行編碼讓對方網站能夠識別
C# HttpWebRequest提交數據方式 使用 GET 方式提交中文數據
GET 方式通過在網絡地址中附加參數來完成數據提交對於中文的編碼常用的有 gb 和 utf 兩種用 gb 方式編碼訪問的程序代碼如下
Encoding myEncoding = EncodingGetEncoding(gb);
string address = + HttpUtilityUrlEncode(參數一 myEncoding) + = + HttpUtilityUrlEncode(值一 myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequestCreate(address);
reqMethod = GET;
using (WebResponse wr = reqGetResponse())
{
//在這裡對接收到的頁面內容進行處理
}
在上面的程序代碼中我們以 GET 方式訪問了網址 傳遞了參數參數一=值一由於無法告知對方提交數據的編碼類型所以編碼方式要以對方的網站為標准常見的網站中 (百度)的編碼方式是 gb (谷歌)的編碼方式是 utf
C# HttpWebRequest提交數據方式 使用 POST 方式提交中文數據
POST 方式通過在頁面內容中填寫參數的方法來完成數據的提交由於提交的參數中可以說明使用的編碼方式所以理論上能獲得更大的兼容性用 gb 方式編碼訪問的程序代碼如下
Encoding myEncoding = EncodingGetEncoding(gb);
string param = HttpUtilityUrlEncode(參數一 myEncoding) + = + HttpUtilityUrlEncode(值一 myEncoding) + & + HttpUtilityUrlEncode(參數二 myEncoding) + = + HttpUtilityUrlEncode(值二 myEncoding);
byte[] postBytes = EncodingASCIIGetBytes(param);
HttpWebRequest req = (HttpWebRequest)
HttpWebRequestCreate( );
reqMethod = POST;
reqContentType = application/xwwwformurlencoded;charset=gb;
reqContentLength = postBytesLength;
using (Stream reqStream = reqGetRequestStream())
{
reqStreamWrite(bs bsLength);
}
using (WebResponse wr = reqGetResponse())
{
//在這裡對接收到的頁面內容進行處理
}
從上面的代碼可以看出 POST 中文數據的時候先使用 UrlEncode 方法將中文字符轉換為編碼後的 ASCII 碼然後提交到服務器提交的時候可以說明編碼的方式用來使對方服務器能夠正確的解析
以上列出了客戶端程序使用HTTP協議與服務器交互的情況常用的是 GET 和 POST 方式現在流行的 WebService 也是通過 HTTP 協議來交互的使用的是 POST 方法與以上稍有所不同的是 WebService 提交的數據內容和接收到的數據內容都是使用了 XML 方式編碼所以 HttpWebRequest 也可以使用在調用 WebService 的情況下
C# HttpWebRequest提交數據方式的基本內容就向你介紹到這裡希望對你了解和學習C# HttpWebRequest提交數據方式有所幫助
From:http://tw.wingwit.com/Article/program/net/201311/13862.html