2

提前感谢您收到的任何帮助。

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

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

在 ASP 经典中执行以下代码时,当我应该得到 404 时,我得到状态代码 12007。这是因为它找不到返回 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

或者这里有什么问题。除了上述标准之外,我可能会看到哪些状态代码。

4

1 回答 1

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

使用 HEAD 允许您测试 URL,而无需实际下载可能很大的实体主体。

于 2009-10-10T12:21:25.247 回答