从 Delphi 10.3 中的 TWebBrowser OnNavigateError 中提取 StatusCode
Extracting StatusCode from TWebBrowser OnNavigateError in Delphi 10.3
我试图在 TWebBrowser 的 OnNavigateError 事件中获取 HTTP 响应代码。传递给我的 StatusCode 始终是 -2146697211,而它应该是 404。我错过了什么?我正在使用 Delphi 10.3.
TWebBrowser
使用 Microsoft 的 Internet Explorer,所以 information about the NavigateError
event can be found online.
StatusCode
参数的解释links to "NavigateError Event Status Codes" - there you see your typical 3-digit HTTP status codes, but also additional ones. Your decimal value of -2146697211
is 0C0005
in hexadecimal - both match the INET_E_RESOURCE_NOT_FOUND
constant, which again links to another page:
- 意思是“找不到服务器或代理”。
为什么这是一个单独的错误代码而不是 HTTP 错误代码?因为它发生在执行 HTTP 之前:查找主机名的 IP 地址失败 - 没有人知道您尝试浏览的主机名具有哪个 IP 地址。这就是 Domain Name System (DNS) 的用途。无法与服务器联系与能够并获得响应是两码事。 HTTP 404
是一个回应。但是由于您甚至没有得到响应,因此您无法获得 HTTP 状态代码。
长话短说:找不到主机(而不是“HTTP 404”= 找到主机,但不是您要查找的页面).尝试使用可以实际解析的 address/a 主机名。
我试图在 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" - there you see your typical 3-digit HTTP status codes, but also additional ones. Your decimal value of-2146697211
is0C0005
in hexadecimal - both match theINET_E_RESOURCE_NOT_FOUND
constant, which again links to another page:- 意思是“找不到服务器或代理”。
为什么这是一个单独的错误代码而不是 HTTP 错误代码?因为它发生在执行 HTTP 之前:查找主机名的 IP 地址失败 - 没有人知道您尝试浏览的主机名具有哪个 IP 地址。这就是 Domain Name System (DNS) 的用途。无法与服务器联系与能够并获得响应是两码事。 HTTP 404
是一个回应。但是由于您甚至没有得到响应,因此您无法获得 HTTP 状态代码。
长话短说:找不到主机(而不是“HTTP 404”= 找到主机,但不是您要查找的页面).尝试使用可以实际解析的 address/a 主机名。