window 下用vbs 腳本訪問url【定時訪問接口很有用且高效】


       有時候我們需要用一個客戶端去模擬人的行爲去定時通過瀏覽器刷新或重新訪問一個url,以便去執行,獲取一些數據,查看一些狀態等等。在Linux系統可以用編輯crontab文件設置定定時任務,用curl 這個功能去模擬訪問url,但我在window下怎麼解決呢?開始我想用批處理命令,後發現不能執行一些window裏的程序,後來查到用cscript 這個命令可以在控制檯窗口無視窗的情況下顯示輸出,關鍵是可以直接執行vbs,而vbs 可以編寫一些複雜的代碼。在vbs中寫了一個死循環,然後用xmlHttp這個組件去訪問一個url

提供了很多的方法和屬性,其實ajax的就是通過這個組件實現的,讓這個組建同步執行,把url返回的字符串打印輸出到控制檯中,其實url那邊是一個apache,訪問的外部接口URL是通過curl,這樣一圈轉的。


'啓動命令 cscript test.vbs http://web.internetedu.org.cn/home/umeng/test
'cscript test.vbs http://web.internetedu.org.cn/home/umeng
'解釋:cscript 執行腳本會在命令行顯示輸出,wscript 執行會彈出對話框窗口,
'後面直接是vbs 文件,文件後面是第一個參數

Dim Wshshell,Msg,i,URL


'Set Wshshell = Wscript.CreateObject("Wscript.Shell")
URL = WScript.Arguments(0)
i=1
arrHttp=array("Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP")
On Error Resume Next
'新建一個XMLHTTP組建
For i=0 To 3
    Set http=CreateObject(arrHttp(i))
    If isObject(http) Then
    Exit For
    End If
    
next
If isObject(http)=false Then
  wscript.echo "XMLHttpRequest not supported"
  Wscript.quit
End if

'u=Inputbox("URL:","輸入URL地址") 
'msgbox u
'一個死循環
do while true  
 
http.open "POST", URL,FALSE
http.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
'http.onreadystatechange=getref("callback")
http.send "id=1111&name=liangfang"
  If http.readyState=4 And http.status=200 Then  
  wscript.echo http.responseText
  Else
  wscript.echo "XMLHTTP_CODE:"&http.readyState&"        HTTP_CODE:"&http.status
  End If
'If Err.Number <> 0 Then  
'     wscript.echo "ERROR"
'End If 
'顯示發送次數
'wscript.echo "SEND_COUNT:"&i
i=i+1
'延遲執行 30秒
wscript.Sleep 30*1000
loop

'只有異步的時候才需要,現在是同步所以沒有執行
Public Function callback()
  If http.readyState=4 And http.status=200 Then  
  wscript.echo http.responseText
  Else
  wscript.echo "XMLHTTP_CODE:"&http.readyState&"        SHTTP_CODE:"&http.status
  End if
End Function






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章