具有重定向功能的HttpWebRequest到HTTPS站点

时间:2011-05-19 23:46:07

标签: c# https httpwebrequest

我正在尝试使用HttpWebRequest自动从HTTPS页面读取一些信息。我正在请求的链接通常会重定向到一个页面,该页面具有登录到php文件的登录/密码字段。

我所拥有的代码不起作用我只是收回包含带有用户名/密码字段的表单的页面信息。

我不确定如何处理这种情况。

总是非常感谢任何帮助。

提前致谢。

 NetworkCredential nc = new NetworkCredential(username, password);
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://myaccount.talktalk.co.uk/myservices/bbusage/viewbbusage"); 
 request.AllowAutoRedirect = true;
 request.Credentials = nc;
 request.Method = "POST";
 CookieContainer cc = new CookieContainer();
 request.CookieContainer = cc;
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 using (StreamReader reader = new StreamReader(response.GetResponseStream()))
 {    
     Console.WriteLine(reader.ReadToEnd());
 } 

1 个答案:

答案 0 :(得分:3)

 request.AllowAutoRedirect = true;

此行导致重定向页面被跳过,因为HttpRequest会在返回之前自动跟随重定向链接。如果您想检查重定向页面,请将此标志更改为false。

编辑:

我可能误解了这个问题,如果你的意思是你试图访问实际的页面(而不是重定向或登录页面),那么你不应该使用NetworkCredential。 NetworkCredential仅适用于Basic,Kerbos和类似的基于浏览器的身份验证系统,PHP站点使用基于表单的身份验证,这需要您执行发布请求。

在这种情况下,解决方案是获取登录表单,填写相应字段并发布,确保保持cookie,因为您的cookie容器应该包含您的身份验证信息。