Люди, поможите плиз кто может. Не могу авторизоваться.
По форумам искал но видимо плохо. Посылаю POST request с данными на форму. Кто-нибудь может подсказать почему сразу после Stream.Write приходит ответ с сервера и как оттуда выдернуть куки (см. код ниже)
Всем посочувствовавшим заранее спасибо
HttpWebRequest req
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.CookieContainer = new CookieContainer();
SomeBytes = Encoding.UTF8.GetBytes(FormParams);
req.ContentLength = SomeBytes.Length;
newStream = req.GetRequestStream();
newStream.Write(SomeBytes, 0, SomeBytes.Length);
// смотрю снифером: здесь был мой запрос и ответ с сервера с куками
newStream.Close();
result = (HttpWebResponse)req.GetResponse();
// Здесь куков уже нет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, alexuz1977, Вы писали:
A>Люди, поможите плиз кто может. Не могу авторизоваться.
A>По форумам искал но видимо плохо. Посылаю POST request с данными на форму. Кто-нибудь может подсказать почему сразу после Stream.Write приходит ответ с сервера и как оттуда выдернуть куки (см. код ниже)
Потому что, у вас нет явного метода SendRequestToServer (его вообще не существует) — вот вы когда пишите в стрим — он сразу на сервер и шлёт. А сервер, увидив конец запроса (посчитав ContentLength) — вам сразу и отвечает (а чего ему ждать то ?) Если вы чтото ещё будете писать — это вообще должно пройти как начало следующего запроса.
а куки должны быть в
result.Cookies — это те что с севера.
А если вам для авторизации, то посмотрите в сторону HttpWebRequest.Credentials и NetworkCredential соответсвенно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Othello, Вы писали:
O>Здравствуйте, alexuz1977, Вы писали:
A>>Люди, поможите плиз кто может. Не могу авторизоваться.
A>>По форумам искал но видимо плохо. Посылаю POST request с данными на форму. Кто-нибудь может подсказать почему сразу после Stream.Write приходит ответ с сервера и как оттуда выдернуть куки (см. код ниже)
O>Потому что, у вас нет явного метода SendRequestToServer (его вообще не существует) — вот вы когда пишите в стрим — он сразу на сервер и шлёт. А сервер, увидив конец запроса (посчитав ContentLength) — вам сразу и отвечает (а чего ему ждать то ?) Если вы чтото ещё будете писать — это вообще должно пройти как начало следующего запроса.
O>а куки должны быть в
O>result.Cookies — это те что с севера.
O>А если вам для авторизации, то посмотрите в сторону HttpWebRequest.Credentials и NetworkCredential соответсвенно.
Может я как-то непонятно выразился. Мне нужно залогиниться на форму. Почему мой вариант не подходит? Зачем мне нужен именно NetworkCredential?
В любом случае залогинился уже. Помогла установка AllowAutoRedirect в false в запросе. Правда не догнал еще почему.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Зачем мне нужен именно NetworkCredential?
это если вы используете встроеную аутентификацию.
если вы ипспользуете свою форму — то просто делайте POST, как вы и делаете.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>