首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Indy IdHttp get请求

Indy IdHttp get请求
EN

Stack Overflow用户
提问于 2016-01-02 06:17:26
回答 1查看 6.2K关注 0票数 1

关于Idhttp.Get方法我遇到了一些问题。我认为它在默认情况下是在阻塞模式下工作(等待答案转到下一行),但我只是看到它没有等待答案转到另一行。我正在使用它的线程,但我认为这不是问题。守则是:

代码语言:javascript
复制
  PbxURL = http://www.biyiklikadin.com;

  IdHTTP1:= TIdHttp.Create(Application);
  IdHTTP1.ConnectTimeout:= 10000;
  IdHTTP1.Request.Clear;
  IdHTTP1.Request.BasicAuthentication:= true;
    try
      IdHTTP1.Get(PbxURL); **//this should STOP here and wait for answer don't?**
      HttpCode:= IdHTTP1.ResponseCode;
    except
      on E: EIdHTTPProtocolException do
        HttpCode := IdHTTP1.ResponseCode;
    end;
    if HttpCode=200 then
      Memo1.Lines.Append('Kızlık Bozma');

因此,我只注意到我没有得到正确的HttpCode值,因为在“Get”方法之后,它只是继续执行,而不等待“Get”完成。我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-01-02 11:35:41

印第阻塞。来自可下载的文档这里 (Indy10.pdf):

Indy使用阻塞套接字调用。..。例如,要连接,只需调用connect方法并等待它返回。如果它成功了,它会在它成功的时候返回。如果失败,它将引发异常。

有人在评论中指出,TIdAntiFreeze可能会影响Indy呼叫的阻塞性质。又一次从医生那里:

Indy有一个特殊的组件,可以透明地解决用户界面冻结问题。只需在应用程序中的任何地方添加一个TIdAntiFreeze,您就可以在程序中执行标准阻塞Indy调用,而无需冻结用户界面。 TIdAntiFreeze的工作方式是内部超时对堆栈的调用,并在超时期间调用Application.ProcessMessages。对Indy的外部调用继续阻塞,因此在没有TIdAntiFreeze的情况下完全一样工作。使用TIdAntiFreeze允许阻塞套接字的所有优点,而不是最突出的缺点。

你的问题没有为进一步的分析提供足够的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34563202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档