C# 通过重定向将HttpWebRequest发送到HTTPS站点
我正在尝试使用HttpWebRequest从HTTPS页面自动读取一些信息。我请求的链接通常会重定向到包含登录/密码字段的页面,这些字段会发布到php文件中 我的代码不起作用,因为我只是返回包含用户名/密码字段的表单的页面信息 我不确定该如何处理这种情况 如有任何帮助,我们将不胜感激 提前谢谢C# 通过重定向将HttpWebRequest发送到HTTPS站点,c#,https,httpwebrequest,C#,Https,Httpwebrequest,我正在尝试使用HttpWebRequest从HTTPS页面自动读取一些信息。我请求的链接通常会重定向到包含登录/密码字段的页面,这些字段会发布到php文件中 我的代码不起作用,因为我只是返回包含用户名/密码字段的表单的页面信息 我不确定该如何处理这种情况 如有任何帮助,我们将不胜感激 提前谢谢 NetworkCredential nc = new NetworkCredential(username, password); HttpWebRequest request = (HttpWebR
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());
}
这一行导致跳过重定向页面,因为HttpRequest在返回之前会自动跟随重定向链接。如果要检查重定向页面,请将此标志更改为false
编辑:
我可能误解了这个问题,如果您的意思是您试图进入实际页面(而不是重定向或登录页面),那么您不应该使用NetworkCredential。NetworkCredential仅适用于Basic、Kerbos和类似的基于浏览器的身份验证系统,PHP站点使用基于表单的身份验证,这要求您执行post请求
本例中的解决方案是获取登录表单,填写适当的字段并发布,确保保存cookie,因为此时cookie容器应该包含您的身份验证信息
这一行导致跳过重定向页面,因为HttpRequest在返回之前会自动跟随重定向链接。如果要检查重定向页面,请将此标志更改为false
编辑:
我可能误解了这个问题,如果您的意思是您试图进入实际页面(而不是重定向或登录页面),那么您不应该使用NetworkCredential。NetworkCredential仅适用于Basic、Kerbos和类似的基于浏览器的身份验证系统,PHP站点使用基于表单的身份验证,这要求您执行post请求
这种情况下的解决方案是获取登录表单,填写适当的字段并发布,确保cookie保持原样,因为此时cookie容器应该包含您的身份验证信息。感谢您的回复。。。很抱歉我说的不清楚,但是您能发布一些伪代码来说明所需的步骤吗?在这种情况下,我会提出多个请求吗?再次感谢。@Darren:我会用它来查看正常登录页面的外观,并了解如何发布。最后,请确保在调用之间附加CookieCollection并维护该对象。感谢您的回复。。。很抱歉我说的不清楚,但是您能发布一些伪代码来说明所需的步骤吗?在这种情况下,我会提出多个请求吗?再次感谢。@Darren:我会用它来查看正常登录页面的外观,并了解如何发布。最后,确保在调用之间附加CookieCollection并维护对象。
request.AllowAutoRedirect = true;