2010-10-01 1 views
3

Почему при запуске следующий код дает ошибку 80004005? Я пытаюсь получить статус нескольких сайтов каждые 10 секунд ... (приведены примеры).Состояние VBS Microsoft.XMLHTTP

'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 

ответ

7

Во-первых, вы должны изменить

Http.Open "GET", site, True 

в

Http.Open "GET", site, False 

, потому что вы не можете использовать Http.Status сразу после Http.Send, если вызов является асинхронным.

Кроме того, вам следует использовать

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

вместо

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

, потому что нормальный объект XMLHTTP имеет проблемы с перенаправляемыми веб-сайтами (www.google.com обычно перенаправляет вас на другой сайт).

+0

Это имеет смысл. Благодаря! – Eugene

+0

(также должно быть 10000 в течение 10 секунд) – Eugene

Смежные вопросы