Состояние VBS Microsoft.XMLHTTP

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

'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

person Eugene    schedule 01.10.2010    source источник


Ответы (2)


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

Http.Open "GET", site, True 

to

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 обычно перенаправляет вас на другой сайт).

person Community    schedule 01.10.2010
comment
(также должно быть 10000 в течение 10 секунд) - person Eugene; 01.10.2010

person    schedule
comment
Хотя этот код может ответить на вопрос, лучше объяснить, как решить проблему, и предоставить код в качестве примера или ссылки. Ответы, содержащие только код, могут сбивать с толку и не иметь контекста. - person Robert Columbia; 29.06.2018