代码之家  ›  专栏  ›  技术社区  ›  jamesmhaley

msxml2.xmlhttp请求验证ASP Classic中输入的URL

  •  1
  • jamesmhaley  · 技术社区  · 15 年前

    提前感谢您的帮助。

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

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

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

    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
    

    或者这里有什么问题。除了上面提到的标准之外,我可能看到什么状态代码。

    1 回复  |  直到 14 年前
        1
  •  4
  •   AnthonyWJones    14 年前

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

    看到这个 list 获取这些异常编号的列表。

    顺便说一句,xmlhttp不是在ASP中使用的安全项对象。你为什么要用一个帖子?这是我将使用的代码:

    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。