使用HttpWebRequest登录失败

时间:2012-03-11 15:52:12

标签: c# 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();

'result'字符串看起来像这样(为了简化显示我编辑的HTML结构):

  

对象移动到href ='/(cls10ljriatq2luvwyzo4eyq)/Default.aspx?LoginInProgress=YES'

从这个字符串中我已经提取了'href'子字符串,然后我尝试用这个完整的地址创建另一个请求:

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

这个不起作用,解析流响应表明我仍然在登录网页中,并且实际上没有继续转发下一个网页。

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

有人能指出我某个解决方案吗?

1 个答案:

答案 0 :(得分:0)

使用FiddlerWireshark并比较成功的请求(使用某些浏览器)和失败的请求...然后通过删除/添加所需的任何内容来模拟代码中的成功请求,通常{ {3}}是这种情况下的“罪魁祸首”之一 - 有时它是特定的引用者或类似的......

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