Форум: "Сети";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Внизпослать 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.069 c