C#web请求身份验证不起作用,尝试了多种方法无效

C#web请求身份验证不起作用,尝试了多种方法无效,c#,http,authentication,web,request,C#,Http,Authentication,Web,Request,我需要任何懂C的人的帮助!我需要创建一个简单的C#脚本,用于创建web请求并能够使用HTTP身份验证登录。我正在我的一个网站上测试脚本,我在其中一个网站上设置了密码锁(不用担心,没有什么机密,只是为了测试目的而阻止了密码): www.alienauthoritythegame.com 用户名和密码:edward tester 我已经找到了几种解决方法(包括StackOverflow),但没有一种有效。我尝试的每个代码/方法上面都包含一条注释,用于我尝试的方法。这些都不管用。当我试图从网页上得到回

我需要任何懂C的人的帮助!我需要创建一个简单的C#脚本,用于创建web请求并能够使用HTTP身份验证登录。我正在我的一个网站上测试脚本,我在其中一个网站上设置了密码锁(不用担心,没有什么机密,只是为了测试目的而阻止了密码): www.alienauthoritythegame.com

用户名和密码:edward tester

我已经找到了几种解决方法(包括StackOverflow),但没有一种有效。我尝试的每个代码/方法上面都包含一条注释,用于我尝试的方法。这些都不管用。当我试图从网页上得到回复时,每次我都得到了401。感谢您的帮助

http_username = "edward";
   http_password = "tester";
   http_authentication = 1;

   try
   {
       string url = "http://alienauthoritythegame.com";
       Uri myUri = new Uri(url);
       WebRequest request = HttpWebRequest.Create(myUri);
       HttpWebRequest myHttpWebRequest = (HttpWebRequest)request;
       request.PreAuthenticate = true;

        // Set up the credentials
        if (http_authentication == 1)
        {

            // method 1: Doesn't work
            NetworkCredential myNetworkCredential = new NetworkCredential(http_username, http_password);
            CredentialCache myCredentialCache = new CredentialCache();
            myCredentialCache.Add(myUri, "Basic", myNetworkCredential);
            request.PreAuthenticate = true;
            request.Credentials = myCredentialCache;

            // Method 2: doesn't work
            ICredentials credentials = new NetworkCredential( "edward", "tester", "http://alienauthoritythegame.com"); //I used my username and password here
            request.Credentials = credentials;

            // Method 3: doesn't work
            System.Net.NetworkCredential netCredential = new System.Net.NetworkCredential("edward", "tester", "http://alienauthoritythegame.com");
            request.Credentials = netCredential;

            // Method 4: doesn't work
            string authInfo = http_username + ":" + http_password;
            authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
            request.Headers["Authorization"] = "Basic " + authInfo;

            // Method 5: doesn't work
            byte[] credentialBuffer = new UTF8Encoding().GetBytes("edward" + ":" + "tester");
            request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(credentialBuffer);
        }

        // Creates a 401 every time
        WebResponse response = request.GetResponse();
   }
   catch (Exception webEx)
   {
        Response.Write(webEx.ToString());
   }

Phil Wright,你链接到的那篇文章,我试过了,看看我的源代码。这是我尝试过的许多方法之一,但我无法通过401错误。。。见方法5。我没有使用函数,只是将基本代码放在那里,persons方法不起作用。请尝试使用…System.Convert.ToBase64String(System.Text.Encoding.GetEncoding(“ISO-8859-1”)而不是UTF8Encoding。另外,您可能需要将领域添加为缓冲区的一部分。方法4和方法5有点相同,其中一个使用64位。我确实查看了您链接的cook computing文章,这很有趣,听起来像是我访问的网页的问题。有趣的是,我的网站托管在GoDaddy上,甚至可以正常浏览呃,这让我验证了两次……看起来他在代码中使用了某种特殊的框架?XML RPC?