使用WebClient或HttpWebRequest进行登录

3
我遇到了严重的登录问题。我无法使用WebBrowser类登录网站,因为WebBrowser只是单线程类。我无法使用WebClient登录,因为我没有cookie。尝试使用HttpWebRequest登录,猜测已经成功登录,因为我得到了带有“login.success”之类的头文件,但当我检索源页面时,它返回给我显示未登录的登录页面。
我正试图登录此页面:https://lite.betfair.com/Login.do?s=000009z 请求的URL: https://lite.betfair.com/SLoginsubmit.do?s=000009z&secure=true&username=user&password=pass 代码:
HttpWebRequest request;
HttpWebResponse response;
CookieContainer cookies;
string url = "https://lite.betfair.com/SLoginsubmit.do?s=000009z&secure=true&username=user&password=pass";
request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
response = (HttpWebResponse)request.GetResponse();
cookies = request.CookieContainer;
response.Close();

request = (HttpWebRequest)WebRequest.Create("https://lite.betfair.com/Events.do?s=000209z");
request.AllowAutoRedirect = false;
request.CookieContainer = cookies;
response = (HttpWebResponse)request.GetResponse(); 

using (Stream s = response.GetResponseStream())
{
     StreamReader sr = new StreamReader(s);
     string line;

     line = sr.ReadToEnd();
}

听起来好像你没有将登录响应中的 cookies 传递给下一个请求。发布你的代码,我们会帮你确定问题所在。 - M.Babcock
2个回答

0

-1

是的,我也是这样认为的。您需要从成功登录的响应中设置sessionID以用于所有后续请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接