« JRA公式なのに真島ワールド全開な疑似競馬体験サイト「CINEMA KEIBA / JAPAN WORLD CUP」 | トップページ | NASのバックアップはNAS? »

2010年7月13日 (火)

[VBScript]VBScriptでPOSTしてデータをダウンロードする

Webアプリの動作確認用に作ったものの久しぶりすぎて手間取ったのでメモ。

下記スクリプトはWSHで動作するVBScriptです。
テキストファイルとしてコピペしてファイルの拡張子を.vbsにすると実行できるよーになります。

指定したURLへ複数のパラメータをPOSTしてダウンロードした内容をカレントフォルダに保存しています。

ポイントとしては、複数パラメータのPOSTとServerXMLHTTPを使って動作確認のためタイムアウトを設定してやっているぐらい。

マルチバイトの文字列をPOSTする場合はもちろんエンコードする必要があります。
(その場合は、VBScriptからJScriptのencodeURI関数を呼び出すのが簡単だと思う)

Dim objweb
Dim objADO
Dim res
Dim strFname

Dim PARA1
Dim PARA2
Dim strPara

Dim startTime

'接続先
strURL = "http://hoggehoge/hogehoge.php"

'パラメータの設定
PARA1  = InputBox("パラメータ1","パラメータ設定","")
PARA2  = InputBox("パラメータ2","パラメータ設定","")

strPara = "PARA1=" & PARA1
strPara = strPara & "&" & "PARA2=" & PARA2

'保存するパスの編集
strFname = "ダウンロードデータ.dat"

Set objweb = CreateObject("MSXML2.ServerXMLHTTP")

'タイムアウトを設定(ms)
Dim intTimeOut
intTimeOut = 60 * 60 * 1000
objweb.setTimeouts intTimeOut, intTimeOut, intTimeOut, intTimeOut

'POSTする
startTime = now
objweb.Open "POST", strURL, False
objweb.setRequestHeader "Content-Type", " application/x-www-form-urlencoded"
objweb.setRequestHeader "Content-Length", "length"
objweb.Send strPara

'レスポンス内容を取得
res = objweb.responseBody

'レスポンス内容を保存
set objADO = CreateObject("ADODB.Stream")
objADO.Type = 1 'BINARY
objADO.Open()
objADO.Write(res)
objADO.SaveToFile strFname,2
objADO.Close

wscript.echo "接続ステータス : " & objweb.Status & " (" & objweb.statusText & ")" & vbCrLf & strFname & " に保存しました" & vbCrLf & vbCrLf & "開始時刻:" & startTime & vbCrLf & "終了時刻:" & now

Set objADO = Nothing
Set objweb = Nothing

|

« JRA公式なのに真島ワールド全開な疑似競馬体験サイト「CINEMA KEIBA / JAPAN WORLD CUP」 | トップページ | NASのバックアップはNAS? »

技術情報もしくは仕事ネタ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/26493/35733479

この記事へのトラックバック一覧です: [VBScript]VBScriptでPOSTしてデータをダウンロードする:

« JRA公式なのに真島ワールド全開な疑似競馬体験サイト「CINEMA KEIBA / JAPAN WORLD CUP」 | トップページ | NASのバックアップはNAS? »