MSXML2.XMLHTTP 请求验证在 ASP Classic 中输入的 URL

jam*_*ley 2 msxml http xmlhttprequest asp-classic

在此先感谢您收到的任何帮助。

我想让我们的客户在文本字段中输入一个 URL,然后检查该 URL 是否存在并有效。

我想检查 3 种可能的结果:状态 200 - 正常,状态 500 - 服务器错误,或状态 404 - 找不到页面。

在 ASP 经典中执行以下代码时,我得到 12007 的状态代码,而我应该得到 404。这是因为它找不到返回 404 代码的网络服务器吗?

Function CheckURL(vURL)
    ON ERROR RESUME NEXT
    Set oXML=Server.CreateObject("MSXML2.XMLHTTP") : oXML.Open "POST",vURL,false : oXML.Send()
    CheckURL = oXML.status
    Set oXML = nothing
End Function
Run Code Online (Sandbox Code Playgroud)

或者这里有什么地方不对劲。除了上述标准之外,我还可能看到哪些状态代码。

Ant*_*nes 6

12007 是 Windows HTTP 错误,这意味着名称尚未解析。如果无法将主机名解析为 IP 地址或无法建立到该 IP 地址的连接,则您将无法获得 200、404、500 或任何此类信息。在这些情况下,您将获得 12000 秒范围内的错误代码,它们不是 HTTP 状态代码,而是 Windows 异常编号。

有关这些例外编号的列表,请参阅此列表

顺便说一句,XMLHTTP 不是在 ASP 中使用的安全项目对象。另外你为什么使用POST?这是我将使用的代码:-

Function CheckURL(vURL)
    On Error Resume Next
    Set xhr = CreateObject("MSXML2.ServerXMLHTTP.3.0")
    xhr.Open "HEAD", vURL, false
    xhr.Send
    CheckURL = xhr.status
End Function
Run Code Online (Sandbox Code Playgroud)

使用 HEAD 允许您测试 URL,而无需实际下载潜在的大型实体主体。