2010-10-01 7 views
3

Pourquoi le code suivant donne-t-il une erreur 80004005 lors de l'exécution? J'essaie d'obtenir le statut de plusieurs sites toutes les 10 secondes ... (ceux donnés sont des exemples).Statut Microsoft.XMLHTTP VBS

'http://www.sebsworld.net/information/?page=VBScript-URL 
'http://www.paulsadowski.com/wsh/xmlhttp.htm 

'the array of sites 
sites = Array("http://www.google.com/","http://en.wikipedia.org/wiki/Main_Page") 

While(True) 
    For Each site In sites 

     'Get site status 
     Set Http = WScript.CreateObject("Microsoft.XMLHTTP") 
     Http.Open "GET", site, True 
     Http.Send 

     If(Http.Status <> 200) Then 'site isn't 200 
      MsgBox "The site at " & vbNewLine & site & vbNewLine & "has status: " & Http.Status 
     End If 
    Next 

    WScript.Sleep(10)'Sleep 10 seconds 
Wend 

Répondre

7

Tout d'abord, vous devez changer

Http.Open "GET", site, True 

à

Http.Open "GET", site, False 

parce que vous ne pouvez pas utiliser Http.Status immédiatement après Http.Send si l'appel est asynchrone.

De plus, vous shoud utiliser

Set Http = WScript.CreateObject("MSXML2.ServerXMLHTTP") 

au lieu de

Set Http = WScript.CreateObject("Microsoft.XMLHTTP") 

parce que l'objet XMLHTTP normale a des problèmes avec des sites Web redirigés (www.google.com vous redirige normalement vers un autre site).

+0

Cela a du sens. Merci! – Eugene

+0

(devrait également être 10000 pendant 10 secondes) – Eugene