#c# #login
#c# #аутентификация
Вопрос:
Я пытаюсь войти на веб-сайт https, и когда я запускаю код, я не получаю ошибку, но я также не вошел в систему, поэтому я хотел бы знать, в чем проблема Я использовал тот же код и технику для веб-сайта http (очевидно, с другой строкой postdata), и он зарегистрировал меня вот код:
string postData = "JAVASCRIPT_ON=userName=XXXXamp;password=XXXamp;loginAction=Logon";
CookieContainer tempCookies = new CookieContainer();
UTF8Encoding encoding = new UTF8Encoding();
Byte[] byteData = encoding.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://direct.gov.mb.ca/ppr/actions/loginDispatcher");
request.Method = "POST";
request.KeepAlive = true;
request.CookieContainer = tempCookies;
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = "https://direct.gov.mb.ca/ppr/jsps/login/login.jsp";
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(byteData, 0, byteData.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
tempCookies.Add(response.Cookies);
loginCookies = tempCookies;
Комментарии:
1. Вы должны передавать длину массива байтов, а не длину строки.
Ответ №1:
Вы должны установить CookieContainer
свойство всех ваших запросов для одного и того же экземпляра.
Комментарии:
1. Привет, спасибо за ваши ответы, ни одно из предложений не сработало, как я уже сказал, я использую тот же код для другого http-сайта, и он не регистрировался без проблем, поэтому я не думаю, что это проблемы, есть другие идеи. Подсказка заключается в том, что при входе в систему происходит перенаправление со страницы входа на другую страницу, но эта страница не для участников (я должен увидеть страницу участников)
2. @roy: Используйте Fiddler, чтобы сравнить ваш поддельный запрос с реальным запросом на вход в систему из браузера.
3. единственные различия заключаются в следующем
4. ПОДКЛЮЧИТЕ direct.gov.mb.ca: 443 HTTP / 1.1 (в моей программе) ПОДКЛЮЧИТЕ direct.gov.mb.ca: 443 HTTP / 1.0 (с браузером) также в браузере есть client: user-aAgent: …. и Entity: Длина содержимого: 0 моя программа не сгенерировала их в заголовке запроса, который подключен, как я могу их сгенерировать
5. также мой идентификатор сеанса пуст, но реальный логин имеет идентификатор сеанса