![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
послать POST-запрос с помощью TidHTTP и не дожидаться ответа [D7, WinXP]
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]
> ответа от сервера ждать не нужно
а как Вы тогда узнаете, успешно дошла информация или нет? или это тоже неважно?