执行函数从错误/超时启动到经典asp中的Vb脚本

时间:2011-09-16 13:22:10

标签: vbscript asp-classic msxml6

我的create.asp页面中有以下方法:

Public Function read(url)

    Set xmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
    Set xml = Server.CreateObject("Microsoft.XMLDOM")

    xmlHttp.Open "GET", url, False, PROXY_USERNAME, PROXY_PASSWORD
    xmlHttp.SetProxy 2, PROXY
    xmlHttp.SetTimeouts 0, 0, 0, 0
    xmlHttp.Send


    xml.Async = False
    xml.SetProperty "ServerHTTPRequest", True
    xml.ValidateOnParse = True

    xml.Load xmlHttp.ResponseXml

    Set read = xml

    Set xmlHttp = Nothing
    Set xml = Nothing
End Function

该功能在10次中有效9次。

问题:在极少数情况下,它会给我一个超时错误。出于这个原因,我将xmlHttp.Timeouts设置为无穷大。我也尝试过使用On error语句,但这并不能解决问题。

问题: * 如果它给我任何类型的错误,如何从头开始执行该功能? * 我遇到的唯一错误是尝试执行xmlHttp.Send时的超时错误。

任何其他可能的解决方案也将受到赞赏。

1 个答案:

答案 0 :(得分:2)

而不是代码问题,它很可能是代理服务器的问题。

如果您希望能够重试,可以;

dim result
for i = 1 to 3 '//3 attempts
    set result = read("http://bla.bla")
    if (not result is nothing) then exit for
next

if (result is nothing) then
    '//repeatedly failed ...
else
    '//got a dom doc
end if

Public Function read(url)
    Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    Set xml = CreateObject("Microsoft.XMLDOM")

    on error resume next

    xmlHttp.Open "GET", url, False
    xmlHttp.Send
    xml.Async = False
    xml.SetProperty "ServerHTTPRequest", True
    xml.ValidateOnParse = True
    xml.Load xmlHttp.ResponseXml

    if (err.number = 0) then
        set read = xml
     else
        set read = nothing
     end if

    on error goto 0
    Set xmlHttp = Nothing
    Set xml = Nothing
End Function