通過HttpWebRequest 發送 POST 請求實現自動登陸

怎樣通過HttpWebRequest 發送 POST 請求到一個網頁服務器?例如編寫個程序實現自動用戶登錄,自動提交表單數據到網站等。

假如某個頁面有個如下的表單(Form):view plaincopy to clipboardprint?

<form name="form1" action="http:www.breakn.com/login.asp" method="post">

<input type="text" name="userid" value="">

<input type="password" name="password" value="">

</form>

<form name="form1" action="http:www.breakn.com/login.asp" method="post">

<input type="text" name="userid" value="">

<input type="password" name="password" value="">

</form>從表單可看到表單有兩個表單域,一個是userid另一個是password,所以以POST形式提交的數據應該包含有這兩項。

其中POST的數據格式爲:

表單域名稱1=值1&表單域名稱2=值2&表單域名稱3=值3……

要注意的是「值」必須是經過HTMLEncode的,即不能包含「<>=&」這些符號。

本例子要提交的數據應該是:

userid=value1&password=value2

用C#寫提交程序:view plaincopy to clipboardprint?

string strId = "guest";

string strPassword= "123456";

ASCIIEncoding encoding=new ASCIIEncoding();

string postData="userid="+strId;

postData += ("&password="+strPassword);

byte[] data = encoding.GetBytes(postData);

// Prepare web request...

HttpWebRequest myRequest =

(HttpWebRequest)WebRequest.Create("http:www.here.com/login.asp");

myRequest.Method = "POST";

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

myRequest.ContentLength = data.Length;

Stream newStream=myRequest.GetRequestStream();

// Send the data.

newStream.Write(data,0,data.Length);

newStream.Close();

// Get response

HttpWebResponse myResponse=(HttpWebResponse)myRequest.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.Default);

string content = reader.ReadToEnd();

Console.WriteLine(content);

· 湖北宜昌三峽壩區水面驚現神秘動物

近日,湖北宜昌,一段視頻在當地熱傳:有網友在三峽壩區拍到神秘動物,體型碩大數米長...

· 什麽是語段?語段的類型以及和句群、段落的區別與聯系是什麽?

句群是最高級的語言單位。 段落(自然段)是章法單位...

· 十八部好看的賭石類小說

以下是十八部(排名不分先後)好看的賭石類小說的簡介,喜歡的朋友可以去搜索書名閱讀...

 
如何讓win XP實現自動登陸
Windows XP是一個比較安全的操作系統,每次啓動時都要求選擇賬戶並輸入密碼,對于公用電腦,這樣當然更安全,但是如果這台電腦是一個人用,也沒有什麽重要資料,每次都要選擇帳戶並輸入密碼實在太麻煩了,怎麽樣才能...查看完整版>>如何讓win XP實現自動登陸
 
如何讓win XP實現自動登陸
Windows XP是一個比較安全的操作系統,每次啓動時都要求選擇賬戶並輸入密碼,對于公用電腦,這樣當然更安全,但是如果這台電腦是一個人用,也沒有什麽重要資料,每次都要選擇帳戶並輸入密碼實在太麻煩了,怎麽樣才能...查看完整版>>如何讓win XP實現自動登陸
 
Java技巧:Java向Web站點發送POST請求
  向Web站點發送GET請求是很輕易的。比如,創建一個URL對象http://www.sun.com/somepage.jsp?key=value,而不是http://www.sun.com/somepage.jsp。然而假如你需要發送一個POST請求時又該怎樣做呢?向一個Web站點發...查看完整版>>Java技巧:Java向Web站點發送POST請求
 
ASP.NET實現自動返回上次請求頁面小技巧
  有時進入管理頁面時,session和cookie消失時,要返回登錄頁面,登錄後我們仍想返回剛才管理操作的這個頁面.這樣很方面.可以用Request的一個屬性實現Request.UrlReferrer  獲取有關客戶端上次請求的 URL 的信...查看完整版>>ASP.NET實現自動返回上次請求頁面小技巧
 
ASP實現不存在的網頁就自動發送郵件
  制作網站的時候通常會有當訪客的一些錯誤操作或我們網站本身的缺陷,造成某個不存在的頁面被訪問,這時會出現404錯誤提示信息,如果是熱心的訪客可能會給你發一封郵件提示你,當時大部分時候是訪客不會給我們發郵...查看完整版>>ASP實現不存在的網頁就自動發送郵件