Delphi   发布时间:2022-04-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 有没有办法为Indy Tidhttp设置响应超时?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Indy TIdhttp组件构建了一个简单的网站监控应用程序.我想检测何时在指定的时间范围内没有返回指定的页面(我使用5000毫秒).作为测试,我在网站上创建了一个页面,故意需要15秒才能响应.但我不能让我的程序在5秒后“放弃”.我已经尝试过ReadTimeout,一个使用计时器的 suggested solution和OnWorkBegin事件(在get调用之后永远无法让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;

解决方法

我最终根据Rob Kennedy的评论得到了答案.我曾多次尝试与他联系并要求他做出“正式”回答,以便我可以给他投票.从未收到过回复.

大佬总结

以上是大佬教程为你收集整理的delphi – 有没有办法为Indy Tidhttp设置响应超时?全部内容,希望文章能够帮你解决delphi – 有没有办法为Indy Tidhttp设置响应超时?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: