Indy IdHTTP未正确报告状态
我已指定Indy IdHTTP未正确报告状态,http,indy,c++builder-xe7,Http,Indy,C++builder Xe7,我已指定OnStatus处理程序使用AStatusText参数更新标签 在处理程序中设置断点时,当我执行Get(“google.com”)时,它仅在hsConnected状态下中断。我知道我不应该得到完整的范围,但我至少应该在hsConnected之前获得hsResolving和hsConnecting消息 可用状态列表: hsResolving, hsConnecting, hsConnected, hsDisconnecting, hsDisconnected, hsStatusText,
OnStatus
处理程序使用AStatusText
参数更新标签
在处理程序中设置断点时,当我执行Get(“google.com”)
时,它仅在hsConnected
状态下中断。我知道我不应该得到完整的范围,但我至少应该在hsConnected
之前获得hsResolving
和hsConnecting
消息
可用状态列表:
hsResolving,
hsConnecting,
hsConnected,
hsDisconnecting,
hsDisconnected,
hsStatusText,
ftpTransfer,
ftpReady,
ftpAborted
知道我为什么没有得到其他状态吗?
hsConnected
由TIdTCPClientCustom
的OnStatus
事件报告,但您要查找的其他状态由TIdIOHandler
的OnStatus
事件报告
如果TIdTCPClientCustom.Connect()
或TIdCustomHTTP.CheckAndConnect()
必须创建一个新的隐式IOHandler对象,则会为其分配一个OnStatus
处理程序,以便调用TIdTCPClientCustom.OnStatus
事件。但是,如果在调用Connect()
之前已经分配了IOHandler,则不会分配任何OnStatus
处理程序。您必须将自己的OnStatus
处理程序分配给您分配的任何IOHandler
有一个TODO项可以使OnStatus
事件连接更加自动化
最有可能发生这种情况的情况是,您在请求HTTPS URL之前手动分配自己的SSLIOHandler。在这种情况下,您可以将OnStatus
处理程序分配给SSLIOHandler。另一方面,如果您使用的是最新版本的Indy,它可以自动创建隐式SSLIOHandler(包括OnStatus
hookup),这样您就不必再分配自己的(除非您需要自定义其设置):
TIdHTTP现在有了新的功能,允许它在请求HTTPS url时自动创建内部默认SSLIOHandler对象(如果尚未分配IOHandler)
谢谢你,雷米,我会尽快重新编译。我现在有LME288问题……是的,我将同一个事件处理程序附加到IOHandler的OnStatus,现在我得到了所有预期的调用。非常感谢。