会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
My Program life
吴碧宇,Knightfire,Wubiyu,
Google Doc
博客园
首页
新随笔
联系
订阅
管理
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数据到网站等。 假如某个页面有个如下的表单(Form):
怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数据到网站等。
假如某个页面有个如下的表单(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#写提交程序:
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();
Response.Write(content);
posted @
2007-07-10 14:53
吴碧宇
阅读(
13882
) 评论(
3
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告