Существует ли способ установить тайм-аут ответа для Инди, которую получает Tidhttp?

Я создал простое приложение мониторинга веб-сайта с помощью Инди компонент TIdhttp. Я хочу обнаружить, когда обозначенная страница не возвращается в кадре требуемого времени (я использую 5 000 миллисекунд). Как тест я создал страницу на веб-сайте, который намеренно занимает 15 секунд для ответа. Но я не могу заставить свою процедуру "сдаваться" после этих 5 секунд. Я попробовал ReadTimeout, предложенное решение с помощью таймера и события OnWorkBegin (так и не смог заставить OnWorkBegin сразу стрелять после получить вызова).

Обратите внимание, что я не волнуюсь по поводу тайм-аута соединения. Мое беспокойство здесь является тайм-аутом для сервера для возврата со страницей.

Вот некоторый исходный код, который я использовал. Это содержит многие элементы, на которые я ссылаюсь.

procedure TServLogic.WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  GetTimer.Enabled := True;
end;
procedure TServLogic.WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  GetTimer.Enabled := False;
end;

procedure TServLogic.GetTimerTimer(Sender: TObject);
begin
  idHttp.Disconnect(True);
end;

procedure TServLogic.CallHttp(mlink: String): String;
begin
  result := '';
  GetTimer := TTimer.create(nil);
  GetTimer.OnTimer := GetTimerTimer;
  GetTimer.Interval := 5000;
  try
    IdHTTP := TIdHTTP.create(nil);
    idhttp.ReadTimeout := 5000;
    IdHttp.OnWorkBegin := WorkBegin;
    IdHttp.OnWorkEnd   := WorkEnd;
    try
      result  := idhttp.get(mLink);
    except
      on e:exception do begin
        AppendToLog('Server did not respond withing 5 seconds');
      end;
    end;
  finally
    GetTimer.Free;
    idhttp.free;
  end;
end;

11
задан Rob Kennedy 23 July 2010 в 04:42
поделиться

1 ответ

В конце концов я получил ответ, основанный на комментариях Роба Кеннеди. Я много раз пытался связаться с ним и попросить его дать «официальный» ответ, чтобы я мог дать ему голос. Никогда не слышал ответа.

3
ответ дан 3 December 2019 в 11:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: