使用WebClient或HttpWebRequest登录

时间:2012-02-17 22:33:50

标签: c# login httpwebrequest webclient

我遇到严重的登录问题。我无法使用WebBrowser类登录到站点,因为WebBrowser只是单线程类。我无法使用WebClient登录,因为我没有cookie。尝试使用HttpWebRequest登录并且Iam猜测我成功登录因为我得到了标题:login.success或类似的东西,但当我检索源页面时它返回我登录页面显示我没有登录。

我尝试登录此页面:https://lite.betfair.com/Login.do?s=000009z

请求的网址: 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();
}

2 个答案:

答案 0 :(得分:0)

尝试:request.CookieContainer = cookies ;代替cookies = request.CookieContainer;

HttpWebRequest.CookieContainer

答案 1 :(得分:-1)

是的,这也是我的想法。您需要从所有即将到来的请求成功登录的响应中设置sessionID。