使用httpWebRequest post 用户名和密码返回的还是原页面是怎么回事啊

Laura2333 2016-09-16 02:57:59
以登录csdn为例
 
<input id="username" name="username" tabindex="1" placeholde
r="输入用户名/邮箱/手机号" class="user-name" type="text" value=""/>

<input id="password" name="password" tabindex="2" placeholde
r="输入密码" class="pass-word" type="password" value="" autocomplete="off"/>


string strId = "client";
string strPassword = "123456";

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=" + strId;
postData += ("&password=" + strPassword);

byte[] data = encoding.GetBytes(postData);

// Prepare web request...
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("https://passport.csdn.net");

myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();

// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();

// Get response
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
Console.WriteLine(content);


返回的还是登录页面的html,怎么办啊
...全文
386 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Laura2333 2016-09-16
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning的回复:
另外,登录表单中还有这么一段
<!-- 该参数可以理解成每个需要登录的用户都有一个流水号。只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程。否则,没有流水号的情况下,webflow会认为用户还没有进入webflow流程,从而会重新进入一次webflow流程,从而会重新出现登录界面。 -->
<input type="hidden" name="lt" value="LT-192203-LFeKbmm6yS3OFv2RKBCpdBKrTvfD3p" />
<input type="hidden" name="execution" value="e1s1" /> 
<input type="hidden" name="_eventId" value="submit" />
你似乎也没有看到 至少你需要先访问表单页,解析出动态产生的 lt 的值 然后才有可能提交成功
学习了,谢谢,那对于那些不需要流水号的在模拟登陆的时候只要把session存下来就可以了是么
xuzuning 2016-09-16
  • 打赏
  • 举报
回复
另外,登录表单中还有这么一段
<!-- 该参数可以理解成每个需要登录的用户都有一个流水号。只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程。否则,没有流水号的情况下,webflow会认为用户还没有进入webflow流程,从而会重新进入一次webflow流程,从而会重新出现登录界面。 -->
<input type="hidden" name="lt" value="LT-192203-LFeKbmm6yS3OFv2RKBCpdBKrTvfD3p" />
<input type="hidden" name="execution" value="e1s1" /> 
<input type="hidden" name="_eventId" value="submit" />
你似乎也没有看到 至少你需要先访问表单页,解析出动态产生的 lt 的值 然后才有可能提交成功
xuzuning 2016-09-16
  • 打赏
  • 举报
回复
访问 https://passport.csdn.net 有这样的 cookie Set-Cookie: JSESSIONID=B4E1ED1CCD5CE0CC8F78292F93E9F0EE.tomcat1; Path=/; HttpOnly Set-Cookie: JSESSIONID=B4E1ED1CCD5CE0CC8F78292F93E9F0EE.tomcat1 Set-Cookie: LSSC=LSSC-19863-sHcPqxgO10UZpkxcgupST6bzUsU1Ie-passport.csdn.net; Expires=Sun, 16-Oct-2016 09:08:30 GMT; Path=/; Secure 但你并没有回送回去 没有了 sesson,他怎么知道登录的是您呢?
Laura2333 2016-09-16
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505的回复:
你的postData 没有发送过去啊
Stream newStream = myRequest.GetRequestStream(); // Send the data. newStream.Write(data, 0, data.Length); newStream.Close(); 这块不是么,或者应该怎么写呢
shoppo0505 2016-09-16
  • 打赏
  • 举报
回复
你的postData 没有发送过去啊

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧