Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过重定向将HttpWebRequest发送到HTTPS站点_C#_Https_Httpwebrequest - Fatal编程技术网

C# 通过重定向将HttpWebRequest发送到HTTPS站点

C# 通过重定向将HttpWebRequest发送到HTTPS站点,c#,https,httpwebrequest,C#,Https,Httpwebrequest,我正在尝试使用HttpWebRequest从HTTPS页面自动读取一些信息。我请求的链接通常会重定向到包含登录/密码字段的页面,这些字段会发布到php文件中 我的代码不起作用,因为我只是返回包含用户名/密码字段的表单的页面信息 我不确定该如何处理这种情况 如有任何帮助,我们将不胜感激 提前谢谢 NetworkCredential nc = new NetworkCredential(username, password); HttpWebRequest request = (HttpWebR

我正在尝试使用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());
 } 
这一行导致跳过重定向页面,因为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;