2011-05-19 175 views
0

我想从HTTPS页面使用HttpWebRequest自动阅读一些信息。我通常请求的链接重定向到具有登录/密码字段的页面,该页面被张贴到php文件中。HttpWebRequest到HTTPS网站与重定向

我有的代码不工作,我只是回到包含带有用户名/密码字段的表单的页面信息。

我不知道我应该如何处理这种情况。

任何协助,总是非常赞赏。

在此先感谢。

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()); 
} 

回答

3
request.AllowAutoRedirect = true; 

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

编辑:

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

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

+0

感谢您的回复......很抱歉,您可能会发布一些伪代码,以了解所需的步骤?在这种情况下,我会提出多个要求吗?再次感谢。 – Darren 2011-05-20 07:07:41

+0

@Darren:我会用[Fiddler2](http://fiddler2.com/fiddler2/)来看看正常的登录页面是什么样子的,然后按照[这些说明](http://msdn.microsoft.com/zh-cn/ com/en-us/library/debx8sh9.aspx)关于如何POST。最后确保你附加了你的CookieCollection并在调用之间维护对象。 – Guvante 2011-05-20 16:45:31