2012-02-01 2 views
2

Я пытаюсь войти на следующий веб-сайт с помощью HttpWebRequest: http://mostanmeldung.moessinger.at/login.phpHttpWebRequest (пост) и перенаправление

Тексты на немецком языке, но они на самом деле не имеет значения. Если вы посмотрите на исходный код (который, кстати, не был написан мной, поэтому не обвиняйте меня в его плохом стиле: 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», который Я перенаправлен. Почему это?

ответ

3

ДЕЙСТВИЕ на эту форму указывает на einloggen.php, а не login.php, поэтому вам нужно отправить свои данные POST в einloggen.php.

+0

О, это так? Не знал этого! Благодарю. – haiyyu

Смежные вопросы