0

ブラウザのアドレスバーからページ ( http://mysite.com/mypageなど)をリクエストすると、メッセージが表示されます [次のような: 認証が必要です: サーバーhttp://mysite.com/mypage:80にはユーザー名が必要ですとパスワード...]。ユーザー名とパスワードを入力すると、ブラウザーへの応答が表示されます。それ以外の場合は、次のように表示されます: ユーザーは許可されていません。

コードで応答を取得できるように、C# コードを使用してこのプロセスを自動化したいと考えています。ユーザー名とパスワードを要求しているため、HttpWebRequest/Response 経由で応答を取得できません。

次のコードブロックで試しました:

       HttpWebRequest webRequest = WebRequest.Create(myUrl) as HttpWebRequest;

       webRequest.Proxy = WebRequest.DefaultWebProxy;

        webRequest.Credentials = new NetworkCredential(userName, password);
        webRequest.Proxy.Credentials = new NetworkCredential(userName, password);

        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        System.IO.Stream stream = response.GetResponseStream();

        System.IO.StreamReader sReader = new System.IO.StreamReader(stream);
        Console.WriteLine(sReader.ReadToEnd());

私を助けてください!

4

3 に答える 3

0

応答ヘッダーを確認する必要があります

詳細については、こちらを確認してください http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.headers.aspx

于 2012-07-06T06:47:43.483 に答える
0

最後に私は解決策に来ました。私が要求していたサイトは、基本的な IIS 認証を必要としています。私は次の方法で解決しました:

        WebRequest webRequest = WebRequest.Create(finalUrl);
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
        CredentialCache credentialCache = new CredentialCache();
        credentialCache.Add(new System.Uri(finalUrl), "Basic", new NetworkCredential(userName, password));

        webRequest.Credentials = credentialCache;
        webRequest.PreAuthenticate = true;

        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

        System.IO.Stream stream = response.GetResponseStream();

        System.IO.StreamReader sReader = new System.IO.StreamReader(stream);
        pageSource = sReader.ReadToEnd();
于 2012-07-06T14:48:56.263 に答える
0
string formParams = string.Format("user={0}&password={1}&switch=Log+In", username, password);
            WebRequest req = WebRequest.Create(Login_Page_URL);
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "POST";
            req.Proxy.Credentials = CredentialCache.DefaultCredentials;
            byte[] bytes = Encoding.ASCII.GetBytes(formParams);
            req.ContentLength = bytes.Length;
            using (Stream os = req.GetRequestStream())
            {
                os.Write(bytes, 0, bytes.Length);
            }
            resp = req.GetResponse();
            cookieHeader = resp.Headers["Set-cookie"];
            resp.Close();

// to view the page behing login page

            WebRequest getRequest = WebRequest.Create(Page_Behing_login_Page_URL);
            getRequest.Headers.Add("Cookie", cookieheader);
            WebResponse getResponse = getRequest.GetResponse();
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                pageSource = sr.ReadToEnd();
            }

これを試して。

于 2012-07-06T06:51:58.647 に答える