2012-02-24 93 views
2

我发现下面的代码位已经改变了我的用途,唯一的问题是如果网站没有给出失败的返回或成功的代码永远不会结束。 (如果网站挂IE)定时执行一个函数/命令

有没有什么办法可以在“HttpRequest.send”命令后设置超时。所以如果30秒后没有响应,它会将其标记为失败并继续前进?

 Set HttpRequest = CreateObject("Msxml2.XMLHTTP") 
    HttpRequest.open "HEAD", "http://example.com/", False 
    On Error Resume Next 
    HttpRequest.send 
    If Err.Number <> 0 Then 
    WScript.Echo "Error : " & Err.Number & ": " & Err.Description 
    Else 
    WScript.Echo "HTTP status: " & HttpRequest.status & " " _ 
     & HttpRequest.statusText 
    End If 

欢呼

哦,这是VBA

亚伦

+0

它似乎不能在此设置超时。如果网站没有正确响应,是否有人会有一个解决方案在大约30秒后超时? – DevilWAH 2012-02-24 13:15:52

+0

您是否看到http://www.dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/? – Fionnuala 2012-02-24 14:30:38

回答

2

切换到"Msxml2.ServerXMLHTTP.3.0"那么你可以设置多个条件超时。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms760403(v=vs.85).aspx

+0

当我尝试使用此方法时,我无法创建活动x对象。 – DevilWAH 2012-02-24 17:14:42

+0

这可能是因为我正在运行64位办公室?或者你能否为什么我不能得到这个工作? – DevilWAH 2012-02-25 15:52:39

+0

现在我遇到了代理设置问题。即我需要使用与在IE中运行相同的代理服务器。使用Msxml2.XMLHTTP而不是“服务器”? – DevilWAH 2012-02-27 16:18:22