web-dev-qa-db-ja.com

リモートサーバーがエラーを返しました:(401)無許可

特定のWebページのHTMLコードを取得しようとしています。正しいユーザー名とパスワードを持っていますが、それでも機能しません。これが私のコードです。

private void buttondownloadfile_Click(object sender, EventArgs e)
{
    NetworkCredentials nc = new NetworkCredentials("?", "?", "http://cdrs.globalpopsvoip.com/0000069/20091229/20091228_20091228.CDR");   
    WebClient client = new WebClient();

    client.Credentials = nc;
    String htmlCode = client.DownloadString("http://cdrs.globalpopsvoip.com/0000069/20091229/20091228_20091228.CDR");

    MessageBox.Show(htmlCode);
}

MessageBoxはそれをテストするためのものですが、問題は、この行に到達するたびに次のことです。

String htmlCode = client.DownloadString("http://cdrs.globalpopsvoip.com/0000069/20091229/20091228_20091228.CDR");

例外が発生します:

リモートサーバーがエラーを返しました:(401)無許可。

これを修正するにはどうすればよいですか?

11
Zaidman

私の場合 client.UseDefaultCredentials = true;トリックをしました。

14
kad81

次のコードを試しましたが、機能しています。

    private void Form1_Load(object sender, EventArgs e)        
    {
        try
        {
            // Create Request
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"http://192.168.0.181/axis-cgi/com/ptz.cgi?move=up");

            // Create Client
            WebClient client = new WebClient();

            // Assign Credentials
            client.Credentials = new NetworkCredential("root", "a");

            // Grab Data
            string htmlCode = client.DownloadString(@"http://192.160.0.1/axis-cgi/com/ptz.cgi?move=up");

            // Display Data
            MessageBox.Show(htmlCode);
        }
        catch (WebException ex) 
        {
            MessageBox.Show(ex.ToString());
        }
    }
6

そのドメイン部分なしでNetworkCredentialを作成してみてください。

NetworkCredential nc = new NetworkCredential("?", "?");   
3
Rubens Farias