Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
3-1179905312
Dush
2007-05-23 11:28
2007.09.30
дублирование записи


2-1188810161
b1099
2007-09-03 13:02
2007.09.30
BDE


1-1185019258
Makhanev Alexander
2007-07-21 16:00
2007.09.30
Совместимость с вистой...


2-1188832831
Bast
2007-09-03 19:20
2007.09.30
Pos


2-1188997477
kyro
2007-09-05 17:04
2007.09.30
Почему в Firebird сбивается сортировка в индексе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский