VBS Microsoft.XMLHTTP状态

Eug*_*ene 6 vbscript xmlhttprequest status

为什么以下代码在运行时会出现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
Run Code Online (Sandbox Code Playgroud)

小智 11

首先,你必须改变

Http.Open "GET", site, True 
Run Code Online (Sandbox Code Playgroud)

Http.Open "GET", site, False
Run Code Online (Sandbox Code Playgroud)

因为如果调用是异步的,你不能Http.Status立即使用Http.Send.

此外,你应该使用

Set Http = WScript.CreateObject("MSXML2.ServerXMLHTTP") 
Run Code Online (Sandbox Code Playgroud)

代替

Set Http = WScript.CreateObject("Microsoft.XMLHTTP")
Run Code Online (Sandbox Code Playgroud)

因为普通的XMLHTTP对象在重定向的网站上存在问题(www.google.com通常会将您重定向到另一个网站).