当通过web请求url时,从需要用户名和密码的url自动获取响应的C#代码
当我通过浏览器地址栏请求页面(比如:)时,它会提示我一条消息[比如:需要身份验证:服务器需要用户名和密码…]。当我提供用户名和密码时,它会显示对浏览器的响应。否则会显示:用户未经授权 我想用C代码自动化这个过程,这样我就可以在代码中得到响应。因为它提示用户名和密码,所以我无法通过HttpWebRequest/response获得响应 我已尝试使用以下代码块:当通过web请求url时,从需要用户名和密码的url自动获取响应的C#代码,c#,C#,当我通过浏览器地址栏请求页面(比如:)时,它会提示我一条消息[比如:需要身份验证:服务器需要用户名和密码…]。当我提供用户名和密码时,它会显示对浏览器的响应。否则会显示:用户未经授权 我想用C代码自动化这个过程,这样我就可以在代码中得到响应。因为它提示用户名和密码,所以我无法通过HttpWebRequest/response获得响应 我已尝试使用以下代码块: HttpWebRequest webRequest = WebRequest.Create(myUrl) as HttpWe
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());
请帮帮我 您必须检查响应标题 欲了解更多信息,请点击此处
试试这个。我终于找到了解决办法。我请求的站点需要基本的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();
它返回以下标题:no cache X-something-cache:hit X-UA-Compatible:IE=EmulateIE7传输编码:分块缓存控制:no cache,no store,私有内容类型:text/html;charset=UTF-8日期:2012年7月6日星期五08:41:42 GMT过期:现在最后修改时间:2012年6月20日星期三14:15:53 GMT服务器:nginx/0.8.53在“WebResponse resp=req.GetResponse();”行出现异常。错误:远程服务器返回错误:(405)方法不允许尝试使用
HTTPWebResponse
而不是“WebResponse”是您尝试访问的页面是http远程服务器或本地主机上的页面。我尝试使用HTTPWebResponse,但结果相同。该页面位于远程服务器上。请尝试检查您传递的凭据`user={0}&password={1}&switch=Log+In'这一行对于您的网站可能也不完全相同。
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();