【问题标题】:MSXML2.XMLHTTP Request to validate entered URL in ASP ClassicMSXML2.XMLHTTP 请求验证在 ASP Classic 中输入的 URL
【发布时间】:2010-04-29 03:12:18
【问题描述】:

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

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

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

在 ASP Classic 中执行以下代码时,我得到状态码 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

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

【问题讨论】:

    标签: http asp-classic xmlhttprequest msxml


    【解决方案1】:

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

    请参阅此list 以获取这些异常编号的列表。

    顺便说一句,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,而无需实际下载可能很大的实体主体。

    【讨论】:

    • 我也很欣赏这一点,尽管函数的最后一行中的“oXML”应该是“xhr”。
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多