您的位置:首页 > 理论基础 > 计算机网络

C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

2013-10-25 21:55 1041 查看
怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数据到网站等。


假如某个页面有个如下的表单(Form):




<form name="form1" action="http://www.sina.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#写提交程序:


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.sina.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();


Response.Write(content);

此方法核心问题是要找到请求页和表单域中的参数ID。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: