我的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
时的超时错误。
任何其他可能的解决方案也将受到赞赏。
答案 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