我正在尝试使用HttpWebRequest登录以下网站:http://mostanmeldung.moessinger.at/login.php
文本是德语,但它们并不重要。如果你看一下源代码(顺便说一句,这不是我写的,所以不要怪我的坏风格:P),你会看到一个包含两个输入标签的表单标签。第一个的名称是“BN”(用户名),第二个的名称是“PW”(密码)。我正在尝试使用HttpWebRequest类将包含这两个输入值的数据发送到Web服务器。但是,发布值会将请求重定向到另一个名为“einloggen.php”的页面。在该网站上,我被告知我的登录是否成功。
我的问题是我能够毫无问题地发送数据,但是,我收到的只是“login.php”的内容,即您必须输入用户名和密码的网站。
这就是我的代码:
string post = String.Format(PostPattern, Username, Password);
byte[] postBytes = Encoding.ASCII.GetBytes(post);
CookieContainer cookies = new CookieContainer();
// "Address": http://mostanmeldung.moessinger.at/login.php
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Address);
req.CookieContainer = cookies;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postBytes.Length;
req.AllowAutoRedirect = true;
MessageBox.Show(post); // shows me "BN=boop;PW=hi"
Stream reqStream = req.GetRequestStream();
reqStream.Write(postBytes, 0, postBytes.Length);
reqStream.Close();
WebResponse res;
if (/*req.HaveResponse &&*/ (res = req.GetResponse()) != null)
{
StreamReader reader = new StreamReader(res.GetResponseStream());
MessageBox.Show(reader.ReadToEnd());
return AuthResult.Success;
}
return AuthResult.NoResponse;
第22行的消息框(结束前5行)向我显示“login.php”的内容,而不是我重定向到的“einloggen.php”。那是为什么?
答案 0 :(得分:3)
该表单上的ACTION指向einloggen.php,而不是login.php,因此您需要将POST数据发送到einloggen.php。