2012-03-11 62 views
1

任何帮助将非常感激。使用HttpWebRequest登录失败

我试图以编程方式使用我的用户名和密码凭证登录到www.penson.com

这样做时使用资源管理器(Chrome浏览器,这件事情),登录链接如下: https://online.penson.com/(q3lsh145vubfki45dl1tr1yc)/Default.aspx?LoginInProgress=YES

在使用这个链接登录后,链接如下: https://online.penson.com/(q3lsh145vubfki45dl1tr1yc)/Default.aspx?LI=Y

从那里我继续与网站... 当然,每当我进入网站,包含不同的某种“Guid”,这个链接正在改变。现在

,我在做什么在我的代码如下:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
    "https://online.penson.com/Default.aspx?LoginInProgress=YES"); 
request.Credentials = new NetworkCredential(myUser, myPassword); 
request.CookieContainer = new CookieContainer(); 
request.AllowAutoRedirect = false; 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = 0; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
Stream streamResponse = response.GetResponseStream(); 
StreamReader sr = new StreamReader(streamResponse); 
string result = sr.ReadToEnd(); 

“结果”的字符串看起来像这样(我已编辑简单的HTML显示结构):

对象移动到HREF =“/(cls10ljriatq2luvwyzo4eyq)/Default.aspx?LoginInProgress=YES”

从这个串我已经提取出的“HREF”子字符串,然后我有试图创建本完整的地址另一个请求:

https://online.penson.com/(cls10ljriatq2luvwyzo4eyq)/Default.aspx?LoginInProgress=YES

这一个不工作,并解析流响应表示我仍然在登录网页,并没有实际继续前进下一个网页。

我试图找出代码有什么问题。我想我的想法是获取“Guid”并将其解析为不准确的登录地址。

有人能指点我一个特定的解决方案吗?

+1

您是否向第二个请求发送了Cookie? – BrokenGlass 2012-03-11 15:55:02

+0

我想我没有......我怎么发送它们? – 2012-03-12 06:47:45

回答

0

使用FiddlerWireshark和比较全成请求(有一些浏览器制造),失败的请求......然后除去模仿码全成请求/添加任何需要的,很多时候Cookies是“元凶”之一在这种情况下 - 有时它是一个特定的推荐人或类似的...

除了编码部分:检查自动登录是否被他们的条款/条件禁止!