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

时间:2009-10-09 09:29:46

标签: http asp-classic xmlhttprequest msxml

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

请参阅此list以获取这些例外数字的列表。

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