猫にWeb

2009-04-24

VBSでHTTPリクエストを投げて、レスポンスを受け取る

現場でツールとして作る機会があったのですが、

どのAPIを使うのかが良く分からなくてちょっとハマったので備忘録的に書いておく。


今回は自分のサーバーにシンプルなテキストを置いて、

そいつにリクエストを投げています。

'************************************************************
'定数
'************************************************************
'' レスポンスを内容を一時出力するテキスト
Const RESPONSE_TEXT = "C:\response.txt"

'' リクエスト対象のURL
Const URL = "http://necoyama3.sakura.ne.jp/tmp/test.txt"

'************************************************************
' メイン処理
'************************************************************
Dim oXMLHTTP   ' MSXMLオブジェクト
Dim oStream    ' ADODB.Streamオブジェクト
Dim resData    ' レスポンス

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

' 同期処理
oXMLHTTP.Open "GET", URL, False
oXMLHTTP.Send

If oXMLHTTP.Status = 200 Then
	Set oStream = CreateObject("ADODB.Stream")
	oStream.Open
	oStream.Type = 1
	oStream.Write oXMLHTTP.responseBody
	oStream.SaveToFile RESPONSE_TEXT
	oStream.Close
	
	' レスポンスファイルを読み込む
	resData = ReadTextAll(RESPONSE_TEXT)
	
	MsgBox resData
Else
	resData = "Error returnCode:" & oXMLHTTP.Status
	MsgBox resData
End If

'************************************************************
'関数ID          :ReadTextAll
'説明            :テキストファイルの内容をすべて読み込みます
'引数            :filePath ・・・ テキストファイルパス
'戻り値          :ファイルの内容のテキスト
'************************************************************
Function ReadTextAll(filePath)
	Dim objFSO       ' ファイルシステムオブジェクト
	Dim resStream    ' テキストストリームオブジェクト
	Dim resData      ' テキスト内容
	
	Set objFSO  = WScript.CreateObject("Scripting.FileSystemObject")
	Set resStream = objFSO.OpenTextFile(filePath, 1)
	
	resData = resStream.ReadAll
	resStream.Close
	
	objFSO.DeleteFile filePath
	
	ReadTextAll = resData
End Function

ポイントはXMLHttpRequestオブジェクトを生成する為に「MSXML2.XMLHTTP」を使用しています。

IEでは、ActiveXObject("Microsoft.XMLHTTP") を使用しており、

バージョンによって、ActiveXObject("Msxml2.XMLHTTP.3.0")なんかもあります。

「MSXML2.XMLHTTP」のファイルは一般的には、「Msxml3.dll」だそうで、

IEでは6.0から同梱されているそうです。

下記のサイトを参考にさせて頂きました。

ホームページデータを取得する/サイトが有効か確認する|VBScript Tips

解説 : XMLHttpRequest


「ADODB.Stream」を使っているのは、UTF-8以外の文字コードも扱えるという事で。

気合いで頑張ればなんでも出来ますね( ̄∇+ ̄)v

iad_otomamayiad_otomamay 2009/04/25 11:42 VBSってWindowsさえあれば他になんにも要らないというのが手軽でいいですね。
色々作っておくと現場で使いまわせて便利ですね。

necoyama3necoyama3 2009/04/26 00:04 >iad_otomamayさん
コメントありがとうございます。
実は好きな言語になっています。
未だにブログにソースをアップするのは緊張するんですけどね。

掟本読ませて頂きました。
まず謝辞でやられました。カッコよすぎます!!
そしてとても勉強になりました。
第4章、見積もり、実装について意識する話が面白かったです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証