2012-02-01 14 views
2

私はHttpWebRequestのを使用して、以下のWebサイトにログオンしようとしています:http://mostanmeldung.moessinger.at/login.phpHttpWebRequestの(ポスト)とリダイレクト

テキストはドイツ語であるが、彼らは本当に重要ではありません。ソースコードを見れば(私の書かれていないので、悪いスタイルのために私を責めないでください:P)、2つの入力タグを含むフォームタグが表示されます。最初の名前は「BN」(ユーザー名)、2番目の名前は「PW」(パスワード)です。私はHttpWebRequestクラスを使用してこれらの2つの入力の値を含むデータを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行)でのメッセージボックスが私の代わりに「einloggen.php」の「login.php」の内容を示してい私はリダイレクトされています。何故ですか?

答えて

3

このフォームのACTIONはlogin.phpではなくeinloggen.phpを指しているので、代わりにPOSTデータをeinloggen.phpに送信する必要があります。

+0

ああそうですか?それを知らなかった!ありがとう。 – haiyyu

関連する問題