1

この質問は、ASPX ページからの HTML の取得に関する以前の質問のフォローアップです。webclient オブジェクトを使ってみることにしましたが、問題はログインが必要なため、ログイン ページの HTML を取得することです。webclient オブジェクトを使用して「ログイン」を試みました。

WebClient ww = new WebClient();

 ww.DownloadString("Login.aspx?UserName=&Password=");

 string html = ww.DownloadString("Internal.aspx");

しかし、私はまだログインページを常に取得しています。ユーザー名情報が Cookie に保存されないことはわかっています。何か間違っているか、重要な部分を抜けているに違いありません。誰がそれが何であるか知っていますか?

4

8 に答える 8

2

WebClient オブジェクトの資格情報プロパティを設定してみてください

WebClient ww = new WebClient();
ww.Credentials = CredentialCache.DefaultCredentials;
ww.DownloadString("Login.aspx?UserName=&Password=");
string html = ww.DownloadString("Internal.aspx");
于 2008-09-14T09:38:36.713 に答える
1

有効なログイン パラメータを特定の URI に渡すだけです。あなたを助けるはずです。

ログイン情報がない場合は、それを回避しようとするべきではありません。

public static string HttpPost( 文字列 URI, 文字列 パラメータ )
      {
         System.Net.WebRequest req = System.Net.WebRequest.Create( URI );
         req.ContentType = "application/x-www-form-urlencoded";
         req.Method = "POST";
         byte[] バイト = System.Text.Encoding.ASCII.GetBytes( パラメータ );
         req.ContentLength = bytes.Length;
         System.IO.Stream os = req.GetRequestStream();
         os.Write(バイト、0、バイト.長さ);
         os.Close();
         System.Net.WebResponse resp = req.GetResponse();
         if ( resp == null ) null を返します。
         System.IO.StreamReader sr = new System.IO.StreamReader( resp.GetResponseStream() );
         return sr.ReadToEnd().Trim();
      }
于 2008-09-15T20:09:53.193 に答える
1

「Login.aspx?UserName=&Password=" を使用してブラウザーでページを開くと、正常に機能しますか?
一部のページでは、URL で提供されるデータを使用したログインが許可されない場合があり、ページのログイン フォームにデータを入力してから送信する必要があります。

于 2008-09-14T09:23:26.127 に答える
1

私が考えることができる他の唯一の理由は、Web ページが意図的にログインをブロックしていることです。コードにアクセスできる場合は、そのようなログインをブロックするように設計されたものがあるかどうかを確認するために使用されるログイン システムを調べてください。

于 2008-09-14T19:59:55.503 に答える
1

Fiddlerを使用して、ブラウザーから手動で行ったときに発生する HTTP 要求と応答を確認します。

于 2008-09-24T03:29:22.093 に答える
0

私が取得しようとしていたaspxページは自分のプロジェクトにあったので、Server.Executeメソッドを使用できました。私の元の質問に対する私の答えの詳細

于 2008-09-15T20:03:45.393 に答える
0

@Fire Lancer: テスト中に同じ質問を自問したので、確認しましたが、ブラウザーから動作します。

于 2008-09-14T09:27:23.153 に答える
0

LiveHttpHeadersプラグインで Firefox を使用します。
これにより、実際のブラウザを介してログインし、サーバーに送信されているものを正確に確認できます. 私の最初の質問は、フォームからの POST が予期されていないことを確認することです。読み込んでいる URL の例は、クエリ文字列 GET を介して情報を送信しています。

于 2008-09-24T03:25:07.987 に答える