【问题标题】:What replaced Indy TIdHTTP.DoRequest?是什么取代了 Indy TIdHTTP.DoRequest?
【发布时间】:2016-08-03 01:44:53
【问题描述】:

在一些用户的帮助下,我刚刚将 Indy 10 迁移到了 Delphi 5。我曾经使用过,

HTTP.DoRequest(hmPost,URL,ssSource,ssResult);//This will not disconnect if already connected like the post

由于 DoRequest 不再可用,如果我尝试使用此代码:

HTTP.Post(URL,ssSource,ssResult);

除非我尝试在 30 秒内再次发帖,否则它工作正常。如果我这样做了,我会收到此错误:

ERROR: Socket Error # 10048. Address already in use.

DoRequest 从来没有引起过这种情况。不知道如何正确更换。

【问题讨论】:

  • DoRequest() 仍然存在,它只是protected。除非您尝试发送自定义 HTTP 命令,否则无需直接调用它。为避免Post() 断开连接,请确保在HTTPOptions 属性中启用hoKeepOrigProtocol 标志。至于您的套接字错误,请提供Minimal, Complete and Verifiable example 演示该问题。
  • 查看我的日志后,我认为问题在于所有发布都是在一个线程内完成的,我最多可以同时运行 3 个线程。线程 2 和 3 总是得到一个 Socket Error #10048。当线程 #1 完成时,它会很好地接收下一个帖子。使用 Indy 9 和 DoRequest()。
  • 您是否尝试在所有线程中使用相同的TIdHTTP 对象,或者它们每个都有自己的TIdHTTP 对象?你在使用BoundIP 和/或BoundPort 属性吗?
  • 感谢您的快速回复。甚至没有时间发布我的编辑。是的,我使用的是同一个 TidHTTp 对象。我正在使用 BoundPort,因为我认为这是 Indy 9 中 HTTP.Port 的替代品。我没有,从来没有使用过 BoundIP。

标签: delphi indy10 delphi-5


【解决方案1】:

雷米·勒博,我想谢谢你。我完全删除了 HTTP.BoundIP,现在没有套接字错误,这意味着确实所有 3 个线程现在都在它们自己的线程中同时运行。谢谢。

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多