web-dev-qa-db-ja.com

VBSのHTTP GET

Visual Basicスクリプト内でHTTP GETリクエストを実行する方法はありますか?処理のために特定のURLから応答のコンテンツを取得する必要があります。

40
Justin Bennett
Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://www.example.com", False
o.send
' o.responseText now holds the response as a string.
70
svinto

この記事を書いている時点では、応答で何をしようとしているか、またはそのコンテンツタイプが何であるかを説明していません。回答にはすでにMSXML2.XMLHTTPの非常に基本的な使用法が含まれています(より明示的なMSXML2.XMLHTTP.3.0 progIDをお勧めします)。

XMLHTTPには、応答のバイト配列バージョンであるresponseBodyプロパティもあり、応答のresponseStreamラッパーであるIStreamがあります。

サーバー側の要件(ASPでホストされるVBScriptなど)では、MSXML.ServerXMLHTTP.3.0またはWinHttp.WinHttpRequest.5.1(ほぼ同一のインターフェイスを使用)を使用することに注意してください。

XmlHttpを使用してPDFファイルを取得して保存する例:

Dim oXMLHTTP
Dim oStream

Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")

oXMLHTTP.Open "GET", "http://someserver/folder/file.pdf", False
oXMLHTTP.Send

If oXMLHTTP.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write oXMLHTTP.responseBody
    oStream.SaveToFile "c:\somefolder\file.pdf"
    oStream.Close
End If
40
AnthonyWJones

GETリクエストを使用して実際にデータを送信している場合...

チェック: http://techhelplist.com/index.php/tech-tutorials/37-windows-troubles/60-vbscript-sending-get-request

MSXML2.XMLHTTPの問題は、いくつかのバージョンがあり、Windows osのバージョンとパッチに応じて名前が異なることです。

これはそれを説明します: http://support.Microsoft.com/kb/269238

私はvbscriptを使って電話をかけることができました

set ID = CreateObject("InternetExplorer.Application")
IE.visible = 0
IE.navigate "http://example.com/parser.php?key=" & value & "key2=" & value2 
do while IE.Busy.... 

....他にもさまざまなものがありますが、単にリクエストを通過させるためです。

4
Jamie