Я пытаюсь зайти на следующий сайт, используя HttpWebRequest: http://mostanmeldung.moessinger.at/login.php
Тексты на немецком языке, но они не имеют большого значения. Если вы посмотрите на исходный код (который, кстати, был написан не мной, так что не вините меня за его плохой стиль: P), вы увидите тег формы, содержащий два входных тега. Имя первого - «BN» (имя пользователя), а имя второго - «PW» (пароль). Я пытаюсь отправить данные, содержащие значения для этих двух входных данных на веб-сервер, используя класс HttpWebRequest. Однако публикация значений перенаправляет запрос на другую страницу с именем «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», на который я перенаправлен. Почему это?