Войдите, используя WebClient или HttpWebRequest - PullRequest
3 голосов
/ 18 февраля 2012

У меня серьезные проблемы с логином. Я не могу использовать класс WebBrowser для входа на сайт, потому что WebBrowser является только однопоточным классом. Я не могу войти через WebClient, потому что у меня нет файлов cookie. Попытался войти в систему с помощью HttpWebRequest, и Iam предположил, что я успешно вошел в систему, потому что получил заголовок с: login.success или что-то в этом роде, но когда я получил страницу с исходным кодом, он вернул мне страницу входа, показывающую, что Iam не зарегистрирован.

Я пытаюсь зайти на эту страницу: 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();
}

Ответы [ 2 ]

0 голосов
/ 01 июля 2014

Попробуйте: request.CookieContainer = cookies ; вместо cookies = request.CookieContainer;.

HttpWebRequest.CookieContainer

0 голосов
/ 22 февраля 2012

Да, я тоже так думал. Вам необходимо установить sessionID из ответа успешного входа в систему для всех поступающих запросов.

...