2015-03-08 3 views
1

Я назначил обработчик OnStatus для обновления метки с параметром AStatusText.Indy IdHTTP не сообщает статус статуса

При настройке точки останова в обработчике он только разбивается на статус hsConnected, когда я делаю Get("google.com"). Я знаю, что я не должен получать полный диапазон, но я должен хотя бы получить сообщения hsResolving и hsConnecting до hsConnected.

Список доступных статусов:

hsResolving, 
hsConnecting, 
hsConnected, 
hsDisconnecting, 
hsDisconnected, 
hsStatusText, 
ftpTransfer, 
ftpReady, 
ftpAborted 

Любая идея, почему я не получаю другие статусы?

ответ

1

hsConnected сообщает OnStatus случае TIdTCPClientCustom, но другие статусы вы ищете докладываются OnStatus случае TIdIOHandler вместо этого.

Если TIdTCPClientCustom.Connect() или TIdCustomHTTP.CheckAndConnect() должен создать новый неявный объект IOHandler, OnStatus обработчик получает назначенный ему так TIdTCPClientCustom.OnStatus событие называется. Однако, если IOHandler уже назначен до того, как вызывается Connect(), то назначается обработчик OnStatus. Вам придется назначить свой собственный обработчик OnStatus на любой IOHandler, который вы назначили.

Существует пункт TODO, чтобы сделать подключение к OnStatus более автоматизированным.

Наиболее вероятным сценарием для этого является то, что вы вручную назначили свой SSLIOHandler перед запросом URL-адресов HTTPS. В этом случае вы можете назначить обработчик OnStatus для вашего SSLIOHandler. С другой стороны, если вы используете обновленную версию Indy, она может автоматически создать неявный SSLIOHandler (который включает в себя подключение OnStatus), поэтому вам больше не нужно назначать свой собственный (если вам не нужно настраивать его настройка):

New HTTPS functionality for TIdHTTP

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

+0

Спасибо Реми, я попробую это, как только смогу снова скомпилировать. У меня проблема с LME288 прямо сейчас ... –

+0

Да, я привязал тот же обработчик событий к OnStatus IOHandler, и теперь получаю все ожидаемые вызовы. Спасибо. –

Смежные вопросы