IdHTTP просто зависает

#delphi #delphi-xe2 #indy #indy10

#delphi #delphi-xe2 #indy #indy10

Вопрос:

У меня есть кнопка и tmemo, я хочу, чтобы при нажатии на кнопку в заметке отображался только URL-адрес. Но это замораживает любую причину, которую вы можете понять, почему?

 procedure TForm1.sendCommandClick(Sender: TObject);
var
  site : string;
begin
Memo1.Lines.Add(getContent('http://something.com'));
end;

function TForm1.getContent(url: String): String;
var
http : TIdHTTP;
begin
 http := TIdHTTP.Create(nil);
   try
     http.HandleRedirects := true;
     Result := http.Get(url);

   finally
     http.Free;
   end;
end;
end.
  

Комментарии:

1. Это замораживает основной поток (где запущен пользовательский интерфейс вашего приложения), и, таким образом, вы можете почувствовать, что он заморожен. Переместите свою задачу в рабочий поток.

2. ну, я позволил ему работать в течение 8-9 минут, и все еще ничего в memo .. не должно занять так много времени?

3. В вашем коде нет ничего, что могло бы вызвать такую задержку. Это что-то конкретное, чего мы не можем увидеть в данный момент. Возможно, какое-то приложение блокирует ваш запрос, что-то в вашей сети или сайт, который вы запрашиваете.

4. хорошо, я попробую другой сайт и посмотрю, работает ли он таким образом .. да, это работает на google..so должно быть что-то на сайте ..grr.. спасибо, TLama

5. Вы можете установить свойства TIdHTTP.ConnectTimeout и TIdHTTP.ReadTimeout , чтобы избежать таких длительных задержек.