我正在尝试使用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());
}
答案 0 :(得分:3)
request.AllowAutoRedirect = true;
此行导致重定向页面被跳过,因为HttpRequest会在返回之前自动跟随重定向链接。如果您想检查重定向页面,请将此标志更改为false。
编辑:
我可能误解了这个问题,如果你的意思是你试图访问实际的页面(而不是重定向或登录页面),那么你不应该使用NetworkCredential。 NetworkCredential仅适用于Basic,Kerbos和类似的基于浏览器的身份验证系统,PHP站点使用基于表单的身份验证,这需要您执行发布请求。
在这种情况下,解决方案是获取登录表单,填写相应字段并发布,确保保持cookie,因为您的cookie容器应该包含您的身份验证信息。