问题描述
我正在尝试在 TWebbrowser 的 OnNavigateError 事件中获取 HTTP 响应代码。传递给我的 StatusCode 总是 -2146697211,而它应该是 404。我错过了什么?我使用的是 Delphi 10.3。
解决方法
-
TWebBrowser
使用 Microsoft 的 Internet Explorer,因此 information about theNavigateError
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”=找到主机,但不是您要查找的页面)。尝试使用可以实际解析的地址/主机名。