Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

послать POST-запрос с помощью TidHTTP и не дожидаться ответа [D7, WinXP]


Страницы:   1 2

Pasha L ©   (2007-01-25 19:12:00) 

Здравствуйте. Вопрос: как мне послать POST-запрос с помощью TidHTTP и не дожидаться ответа?


DVM   (2007-01-31 12:45:00) [1]


> Ну, если в ответе написано connection:close, то нужно вызвать
> connect заново?

Да. Но один и тот же сервер может по разному отвечать, в зависимости от того как обратился клиент. Если клиент сделал запрос HTTP1.1 да и указал keep-alive то сервер может поддержать такой диалог. Т.е. сервер может оказаться надо подтолкнуть к нужной форме общения.


Pasha L   (2007-01-30 22:24:00) [2]

Ну, если в ответе написано connection:close, то нужно вызвать connect заново?


DVM   (2007-01-30 15:57:00) [3]


> Когда сервер разрывает соединение, клиент автоматически
> его закрывает у себя?

Смотря как клиент написан. Не факт.


> удет ли дисконнект, зависит от того, какое состояние связи
> установлено на сервере (close/keep-alive)?

Ну в общем да. Клиент еще должен понимать, что после считывания ответа сервера не надо рвать соединение.


Pasha L   (2007-01-30 15:33:00) [4]


> дисконнект со стороны сервера

будет ли дисконнект, зависит от того, какое состояние связи установлено на сервере (close/keep-alive)?
Когда сервер разрывает соединение, клиент автоматически его закрывает у себя?


DVM   (2007-01-30 11:27:00) [5]


> а можно ли законектиться, отправить несколько запросов (в
> виде write(str)), а потом разорвать связь?

Обычно нет. Сервер должен поддерживать такой режим работы. Обычно в хттп схема работы такова: коннект - запрос клиента - чтение запроса сервером - выполнение запроса - ответ сервера - чтение ответа сервера клиентом - дисконнект со стороны сервера - атоматический дисконнект клиента.


Pasha L   (2007-01-29 19:59:00) [6]

а можно ли законектиться, отправить несколько запросов (в виде write(str)), а потом разорвать связь?

idtcpclient1.connect;
for i:=1 to n do
 idtcpclient1.write(str(i));
idtcpclient1.disconnect;


так это осуществляется?


DVM   (2007-01-28 23:20:00) [7]


> Pasha L ©   (25.01.07 19:12)  
> Здравствуйте. Вопрос: как мне послать POST-запрос с помощью
> TidHTTP и не дожидаться ответа?

Некоторые серверы не выполняют запрос, если клиент не начинает принимать данные. Сталкивался с таким. Ответ сервера всегда читать надо.


Pasha L   (2007-01-28 17:19:00) [8]

wikipedia - ссила
спасибо


Dmitrij_K   (2007-01-28 09:03:00) [9]


> Pasha L ©   (27.01.07 23:31) [13]
>
> А что это такое и с чем его едят?

http://ru.wikipedia.org/wiki/Sniffer
Вот неплохой сниффер - smsniff


Pasha L   (2007-01-27 23:31:00) [10]

А что это такое и с чем его едят?

Файловый снифер?


Dmitrij_K   (2007-01-27 23:23:00) [11]

HTTP поля запроса host, content-length
ЗЫ
последний раз предлагаю скачать сниффер, будет меньше глупых вопросов.


Pasha L   (2007-01-27 23:13:00) [12]

 idtcpclient1.Host:=host;
 idtcpclient1.Port:=80;
 s:='POST /'+page+' HTTP/1.1'#13#10'Connection: close'#13#10#13#10'session='+ses+#13#10'mesg='+mesg+#13#10;
 idtcpclient1.Connect;
 idtcpclient1.Write(s);

(два поля отсылаемой формы: session и mesg)
напоминаю, нужно отправить запрос и не ждать ответа... но даже запрос не доходит.
что не так?


Dmitrij_K   (2007-01-27 18:09:00) [13]

Cм. описание HTTP протокола.
Если лень, скачай сниффер и смотри что посылает idHTTP


Pasha L   (2007-01-27 16:35:00) [14]

Dmitrij_K   (27.01.07 01:03) [8]
приведи аналог, пожалуйста, идэхэтэтэпэшному посту...


Dmitrij_K   (2007-01-27 01:03:00) [15]


> Pasha L ©   (26.01.07 23:27) [7]
> является ли это аналогом?

Никаким образом


Pasha L   (2007-01-26 23:27:00) [16]

использую TIdTCPClient. выползает ошибка на connect: socket error #№11004
вот, что я делал с помощью idhttp:
 idhttp2.Post(path,req);
вот, что делаю с idtcpclient1:
 idtcpclient1.Host:=path;
 idtcpclient1.Port:=80;
 idtcpclient1.Connect;
 idtcpclient1.WriteHeader(req);
является ли это аналогом?


umbra   (2007-01-26 12:16:00) [17]

если не нужен ответ, то, мне кажется, TidHTTP избыточен. Достаточно TIdTCPClient. Коннектимся к серверу, пишем данные, прерываем соединение.


Anatoly Podgoretsky   (2007-01-25 22:48:00) [18]

> umbra  (25.01.2007 19:17:01)  [1]

Например отсылка (запрос) счетчика или спам робот.


Pasha L   (2007-01-25 19:52:00) [19]

umbra ©   (25.01.07 19:43) [3]
почти во всех случаях операция проходит успешно. Это неважно, это проверяется в другой части программы...


umbra   (2007-01-25 19:43:00) [20]


> ответа от сервера ждать не нужно

а как Вы тогда узнаете, успешно дошла информация или нет? или это тоже неважно?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо