我现在向一个站点模拟一个PosT请求,其实就是模拟登录这个站点。
用户名跟密码是绝对没问题的,在IE上登录都可以,但用PosT模拟发送出现问题了。
代码如下:
string postData = "uUsername=abc&uPassword=ccc";
byte[] data = System.Text.Encoding.GetEncoding("GB2312").GetBytes(postData) ;
string postUrl = "http://wwww.aaa.com";
// 准备请求...
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postUrl);
try
{
req.Method = "post" ;
req.ContentType ="application/x-www-form-urlencoded";
req.ContentLength = data.Length;
Stream stream = req.GetRequestStream() ;
// 发送数据
stream.Write (data ,0 ,data.Length ) ;
stream.Close () ;
HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
Stream receiveStream = rep.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("GB2312");
StreamReader readStream = new StreamReader( receiveStream, encode );
Char[] read = new Char[256];
int count = readStream.Read( read, 0, 256 );
StringBuilder sb = new StringBuilder("") ;
while (count > 0)
{
String readstr = new String(read, 0, count);
sb.Append (readstr) ;
count = readStream.Read(read, 0, 256);
}
rep.Close();
readStream.Close();
Response.Write(sb.Tostring());
Response.Write("Login success!");
return true;
}
catch(Exception ex)
{
Response.Write("Login error:"+ex.Message.Tostring());
return false;
}
返回:
远程服务器返回错误: (403) 已禁止。
所以,我在本地建了一个接收PosT地址的URL,部份代码如下:
string uUsername = Request.Form["uUsername"];
string uPassword = Request.Form["uPassword"];
if (uUsername!=null && uUsername !="")
{
Response.Write("post data:uUsername"+uUsername+",uPassword:"+uPassword);
}
else
{
Response.Write("post data null!");
}
都接收成功,就在就纳闷了。按理来说,我的模拟PosT请求的代码应该是没问题的。
但PosT服务器上就是有错误,望高手指点!
http://it130.net/asp-asp.net/http-post-134580.htm
用户名跟密码是绝对没问题的,在IE上登录都可以,但用PosT模拟发送出现问题了。
代码如下:
string postData = "uUsername=abc&uPassword=ccc";
byte[] data = System.Text.Encoding.GetEncoding("GB2312").GetBytes(postData) ;
string postUrl = "http://wwww.aaa.com";
// 准备请求...
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postUrl);
try
{
req.Method = "post" ;
req.ContentType ="application/x-www-form-urlencoded";
req.ContentLength = data.Length;
Stream stream = req.GetRequestStream() ;
// 发送数据
stream.Write (data ,0 ,data.Length ) ;
stream.Close () ;
HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
Stream receiveStream = rep.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("GB2312");
StreamReader readStream = new StreamReader( receiveStream, encode );
Char[] read = new Char[256];
int count = readStream.Read( read, 0, 256 );
StringBuilder sb = new StringBuilder("") ;
while (count > 0)
{
String readstr = new String(read, 0, count);
sb.Append (readstr) ;
count = readStream.Read(read, 0, 256);
}
rep.Close();
readStream.Close();
Response.Write(sb.Tostring());
Response.Write("Login success!");
return true;
}
catch(Exception ex)
{
Response.Write("Login error:"+ex.Message.Tostring());
return false;
}
返回:
远程服务器返回错误: (403) 已禁止。
所以,我在本地建了一个接收PosT地址的URL,部份代码如下:
string uUsername = Request.Form["uUsername"];
string uPassword = Request.Form["uPassword"];
if (uUsername!=null && uUsername !="")
{
Response.Write("post data:uUsername"+uUsername+",uPassword:"+uPassword);
}
else
{
Response.Write("post data null!");
}
都接收成功,就在就纳闷了。按理来说,我的模拟PosT请求的代码应该是没问题的。
但PosT服务器上就是有错误,望高手指点!
http://it130.net/asp-asp.net/http-post-134580.htm
浙公网安备 33010602011771号