Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

послать POST-запрос с помощью TidHTTP и не дожидаться ответа   Найти похожие ветки 

 
Pasha L ©   (2007-01-25 19:12) [0]

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


 
umbra ©   (2007-01-25 19:17) [1]


> как мне послать POST-запрос ... и не дожидаться
> ответа?

а зачем его тогда вообще посылать?


 
Pasha L ©   (2007-01-25 19:22) [2]

ну нужно... нужно отправить заполненную форму, чтобы оставить информацию на сервере... ответа от сервера ждать не нужно... он там вообще никакой, ничего нужного не несет, а на ожидание тратится время...


 
umbra ©   (2007-01-25 19:43) [3]


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

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


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

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


 
Anatoly Podgoretsky ©   (2007-01-25 22:48) [5]

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

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


 
umbra ©   (2007-01-26 12:16) [6]

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


 
Pasha L ©   (2007-01-26 23:27) [7]

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


 
Dmitrij_K   (2007-01-27 01:03) [8]


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

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


 
Pasha L ©   (2007-01-27 16:35) [9]

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


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

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


 
Pasha L ©   (2007-01-27 23:13) [11]

 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 23:23) [12]

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


 
Pasha L ©   (2007-01-27 23:31) [13]

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

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


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


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

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


 
Pasha L ©   (2007-01-28 17:19) [15]

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


 
DVM ©   (2007-01-28 23:20) [16]


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

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


 
Pasha L ©   (2007-01-29 19:59) [17]

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

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


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


 
DVM ©   (2007-01-30 11:27) [18]


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

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


 
Pasha L ©   (2007-01-30 15:33) [19]


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

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


 
DVM ©   (2007-01-30 15:57) [20]


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

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


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

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


 
Pasha L ©   (2007-01-30 22:24) [21]

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


 
DVM ©   (2007-01-31 12:45) [22]


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.018 c
2-1188314106
Bora.ru
2007-08-28 19:15
2007.09.30
Копирование файла по сети


15-1188547116
@!!ex
2007-08-31 11:58
2007.09.30
Стартовая страница браузера.


15-1188055030
Cyrax
2007-08-25 19:17
2007.09.30
Посоветуйте дешёвого дистрибьютера компьютерной техники в Москве


2-1188652748
nil_pointer
2007-09-01 17:19
2007.09.30
Constant expression violates subrange bounds


15-1189014249
Layner
2007-09-05 21:44
2007.09.30
Веб статистика от некоторых профи вебмастеров