我有一个使用基本身份验证(用户名/密码)的网站。
为什么下面的代码不起作用?当我运行它时,Web 应用程序会将我带到登录控制器,而我希望在我填充凭据的情况下它应该已经经过身份验证。换句话说,我试图确认在.NET 中如何确认我的winforms HttpWebRequest,以便它将自动执行身份验证过程。我假设 NetworkCredential 是应该执行此操作的 .net 类?或者在 .NET 中是否期望有一些您必须自己实现的手动两步过程?
这是代码:
// Create a new webrequest to the mentioned URL.
var uri = new Uri("http://10.1.1.102:3000/download/sunset");
var myWebRequest = (HttpWebRequest)WebRequest.Create(uri);
myWebRequest.PreAuthenticate=true;
var networkCredential=new NetworkCredential("test", "asdfasdf");
myWebRequest.Credentials=networkCredential;
var myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
Console.Out.WriteLine("STATUS = " + myWebResponse.StatusCode);
var stream = myWebResponse.GetResponseStream();
var reader = new StreamReader(stream);
string text_read = reader.ReadToEnd();
Console.WriteLine(text_read);
DisplayHtml(text_read);
reader.Close();
stream.Close();
myWebResponse.Close();
Thanks
WebRequest
除非受到站点的质疑,否则不会发送凭据。该网站应首先响应 401“需要授权”WWW-Authenticate
标头;这WebRequest
将使用凭据响应质询,并且服务应使用 200 Http 内容进行响应。
听起来该网站没有正确实现基本身份验证(规范说它应该首先挑战,以通过该领域),这是一种非常常见的行为。您可以手动将基本身份验证添加到WebRequest.Headers
集合,这就是大多数开发人员最终所做的事情。
See HttpWebRequest 未传递凭据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)