Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Проблема с методом GET (Indy/ICS)   Найти похожие ветки 

 
KOPOBA   (2005-01-18 03:56) [0]

Есть желание сделать программу-бота для чата на основе скрипта Voc.php... Функции входа, выхода, отправки сообщений и т.п. делаются достаточно легко с помощью Indy- или ICS- компонентов. Вся загвоздка в том, чтобы заставить бота "видеть" сообщения пользователей. Документ во фрейме с сообщениями пользователей генерируется скриптом tail.php, которому посылается в качестве параметра значение session - уникальный идентификатор сессии для каждого пользователя. Я пытаюсь получить HTML код страницы с сообщениями пользователей, послав запрос:

GET http://chat.mychat.ru/tail.php?session=d3e683aecaf08f77bf84ae56a245c9ad HTTP/1.0

Текст на Delphi процедуры отсылки запроса (для ICS) выглядит так:

httpcli1.Accept:= "text/html";
httpcli1.AcceptLanguage:= "ru";
httpcli1.ContentTypePost:= "application/x-www-form-urlencoded";
httpcli1.Agent:="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MRA 4.0 (build 00768); .NET CLR 1.0.3705; .NET CLR 1.1.4322)";
httpcli1.NoCache:= True;
httpcli1.Proxy      := "";
httpcli1.ProxyPort  := "80";
httpcli1.URL        := "http://chat.mychat.ru/tail.php?session=d3e683aecaf08f77bf84ae56a245c9ad";

       try
           httpcli1.Get;
       except
           MessageDlg("Status Code: "+IntToStr(httpcli1.StatusCode)+#13#10+"Reason Phrase: "+httpcli1.ReasonPhrase, MtError, [mbOk], 0);
           Exit;
       end;

Всё делаю, вроде, как следует... Пытаюсь получить документ через httpcli1.RcvdStream, но вот тут и возникает проблема. Дело в том, что программа не прекращает выполнять метод GET. Похоже из-за того, что скрипт постоянно генерирует новый документ. Или что-то в этом роде. Я, честно говоря, в этих тонкостях не разбираюсь. Однако, проблема требует решения, так как событие, возникающее на завершение получения документа, не вызывается. Если во время выполнения запроса вызвать метод httpcli1.Abort, то программа прекращает его выполнять и в полученном потоке я вижу то, что мне нужно - документ с сообщениями пользователей. Однако, при таком обрыве вылетает сообщение об ошибке да и способ это какой-то грязный...

Уважаемые пользователи. Возможно, кто-то из вас может подсказать мне, в чём заключается проблема, почему так происходит и какие существуют возможные методы решения?

PS:
С Indy-компонентами та же проблема...


 
Jel ©   (2005-01-18 19:55) [1]

Думаю, тут дело не в компонентах. Дело в самом скрипте tail.php который не прекращает вывод сообщений до явной остановки пользователем.


 
KOPOBA   (2005-01-19 04:35) [2]

2 Jel:
Вы правы, это очевидно. "Проблемой" я это назвала, подразумевая, что проблема возникает при отсылке запроса GET, а не по той причине, что именно в методе httpcli1.Get какие-то ошибки.
Программа будто подключается к этому скрипту и он её не отпускает, передавая постоянно поток данных от скрипта. Есть ли возможность как-то анализировать этот поток, пока он передаётся? В Indy-компонентах есть некие Intercepts. Можно ли их использовать в данном случае? Если можно, то как? Есть ли примеры их использования в подобных случаях?



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

Форум: "Сети";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.038 c
6-1106208547
xZero
2005-01-20 11:09
2005.03.20
бродкаст через хабы


14-1109751261
Gero
2005-03-02 11:14
2005.03.20
Просьба потестировать


4-1107328870
Игорь Шевченко
2005-02-02 10:21
2005.03.20
Любителям "скырть процесс" под NT посвящается...


14-1109154227
[wl]
2005-02-23 13:23
2005.03.20
Подскажите веб-браузер для сотового (J2ME MIDP2.0)


14-1109495138
cyborg
2005-02-27 12:05
2005.03.20
Скорость работы Линукса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский