Вход с помощью HttpWebRequest

#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. также мой идентификатор сеанса пуст, но реальный логин имеет идентификатор сеанса