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