2009-10-09 59 views
1

预先感谢您收到的任何帮助。MSXML2.XMLHTTP请求验证在ASP Classic中输入的URL

我希望让我们的客户端输入网址的文本字段,然后检查URL是否存在和作品。

有三种可能的结果我想检查: 200一个状态 - 确定, 形成500的状态 - 服务器错误, 或404状态 - 找不到网页。

当执行在ASP经典下面的代码,我得到的12007状态代码时,我应该得到404这是因为它无法找到Web服务器返回的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

的12007是一个Windows HTTP错误,这意味着名字一直没有得到解决。如果主机名无法解析为IP地址或无法建立到该IP地址的连接,则无法获得200,404,500或任何类似的东西。在这些情况下,您将得到12000s范围内的错误代码,这些代码不是HTTP状态代码,而是窗口例外数字。

看到这个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,而无需实际下载可能较大的实体主体。

+0

谢谢你的提示 – jamesmhaley 2009-10-14 09:44:42

+0

我对此表示赞赏太,虽然“OXML”应该是在函数的最后一行“XHR”。 – 2010-04-28 18:23:40

+0

@唐:良好的捕获,修复。 – AnthonyWJones 2010-04-28 19:12:43