Раньше я использовал Indy еще во времена Delphi 6, а сейчас играю с Indy 10. То, что я хочу сделать, невероятно просто, но я не вижу простого способа сделать это, поэтому я должен что-то упустить.
Я хочу сделать что-то вроде этого:
Вот фактический код, который я использую:
procedure TForm1.btnGetURLClick(Sender: TObject);
begin
moHeader.Lines.Clear;
moBody.Lines.Clear;
try
moBody.text := IdHttp1.Get(edURL.text);
finally
end;
end;
Когда запрос завершен, http_result должен содержать HTML из указанного URL. Однако это, похоже, не работает, поэтому я чувствую, что, возможно, мне следует использовать свойство IOHandler или событие OnWork компонента, однако использование не кажется мне очевидным, и я не смог найти никаких рабочих примеров. с гугл. Я уверен, что это то, что было сделано раньше, поэтому любая помощь будет оценена.
Дополнительная информация: Чтобы быть более конкретным, я хочу знать: 1. Правильно ли я делаю это с самого начала (или я что-то упустил?). 2. Если да, то почему он может не работать. 3. Всегда возможно, что в комбинации компилятор/ОС/Инди, которую я использую, есть ошибка. (Хотя должно работать).
Я должен упомянуть, что я всегда получаю всплывающее окно «Соединение закрыто изящно». Кажется, это исключение, и оно может мешать результату функции. Я попытался поймать это с помощью TRY...FINALLY, но это не сработало. Вероятно, потому, что Indy вызывает исключение в фоновом режиме после запуска метода Get, я полагаю.
Наконец, вот скриншот работающей программы, чтобы не было путаницы: http://screencast.com/t/NDMzNTQ5 Я ожидаю, что HTML заполнит второе поле для заметок.
IdHTTP1
. Я предполагаю, что если вы не используете форму, вы делаете это вручную в своем коде. - person jpfollenius   schedule 16.11.2009