HttpWebRequest(post)和重定向

时间:2012-02-01 19:25:53

标签: c# webserver httprequest

我正在尝试使用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”。那是为什么?

1 个答案:

答案 0 :(得分:3)

该表单上的ACTION指向einloggen.php,而不是login.php,因此您需要将POST数据发送到einloggen.php。