从 Delphi 10.3 中的 TWebBrowser OnNavigateError 中提取 StatusCode
Posted
技术标签:
【中文标题】从 Delphi 10.3 中的 TWebBrowser OnNavigateError 中提取 StatusCode【英文标题】:Extracting StatusCode from TWebBrowser OnNavigateError in Delphi 10.3 【发布时间】:2021-05-11 17:39:38 【问题描述】:我正在尝试在 TWebBrowser 的 OnNavigateError 事件中获取 HTTP 响应代码。传递给我的 StatusCode 始终是 -2146697211,而它应该是 404。我错过了什么?我正在使用 Delphi 10.3。
【问题讨论】:
【参考方案1】:TWebBrowser
使用微软的 Internet Explorer,所以 information about the NavigateError
event can be found online。
StatusCode
参数links to "NavigateError Event Status Codes" 的解释 - 在那里您可以看到典型的 3 位 HTTP 状态代码,还有其他的。 -2146697211
的 十进制 值是 十六进制 中的 $800C0005
- 两者都匹配 INET_E_RESOURCE_NOT_FOUND
常量,这又是 links to another page:
表示“未找到服务器或代理。”
为什么这是一个单独的错误代码而不是 HTTP 错误代码?因为它发生在执行 HTTP 之前:查找主机名的 IP 地址失败 - 没有人知道您尝试浏览的主机名具有哪个 IP 地址。这就是Domain Name System (DNS) 的用途。无法与服务器取得联系与能够并获得响应是不同的事情。 HTTP 404
是回复。但是由于您甚至没有收到响应,因此您无法获得 HTTP 状态代码。
长话短说:找不到主机(而不是“HTTP 404”=找到主机,但不是您要查找的页面)。尝试使用可以实际解析的地址/主机名。
【讨论】:
以上是关于从 Delphi 10.3 中的 TWebBrowser OnNavigateError 中提取 StatusCode的主要内容,如果未能解决你的问题,请参考以下文章