HttpWebRequest. Почему response приходит после Stream.Write
От: alexuz1977  
Дата: 03.05.07 15:37
Оценка:
Люди, поможите плиз кто может. Не могу авторизоваться.

По форумам искал но видимо плохо. Посылаю 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>>
Re: HttpWebRequest. Почему response приходит после Stream.Wr
От: Othello  
Дата: 04.05.07 11:53
Оценка:
Здравствуйте, alexuz1977, Вы писали:

A>Люди, поможите плиз кто может. Не могу авторизоваться.


A>По форумам искал но видимо плохо. Посылаю POST request с данными на форму. Кто-нибудь может подсказать почему сразу после Stream.Write приходит ответ с сервера и как оттуда выдернуть куки (см. код ниже)


Потому что, у вас нет явного метода SendRequestToServer (его вообще не существует) — вот вы когда пишите в стрим — он сразу на сервер и шлёт. А сервер, увидив конец запроса (посчитав ContentLength) — вам сразу и отвечает (а чего ему ждать то ?) Если вы чтото ещё будете писать — это вообще должно пройти как начало следующего запроса.

а куки должны быть в
result.Cookies — это те что с севера.

А если вам для авторизации, то посмотрите в сторону HttpWebRequest.Credentials и NetworkCredential соответсвенно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: HttpWebRequest. Почему response приходит после Stream
От: alexuz1977  
Дата: 04.05.07 16:30
Оценка:
Здравствуйте, 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>>
Re[3]: HttpWebRequest. Почему response приходит после Stream
От: Othello  
Дата: 07.05.07 06:41
Оценка:
Зачем мне нужен именно NetworkCredential?
это если вы используете встроеную аутентификацию.
если вы ипспользуете свою форму — то просто делайте POST, как вы и делаете.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.