2010年9月15日水曜日

[他]VBSでHTTP通信&文字のエンコード

えぇ、まぁうちの会社の打刻システムはHTTPでGETすることにより打刻します。

先日システムのバージョンアップがあり、知らぬ間にShiftJISからMS932にエンコードへ変えられていました。
MSXML2.ServerXmlHttpではMS932には対応していないため、取得した文字列が正しくデコードされず、日本語が化けてしまいます。で、標準的なもので何とかならないものか。と調査してみると、ADODB.Streamで解決できることがわかりました。ということでこんな感じ(一部手打ちなので、エラーが出たらスマソ)。

Dim objHttp: Set objHttp = WScript.CreateObject("MSXML2.ServerXmlHttp")
Dim strXML

Call objHttp.Open("GET""https://hogehoge.com/kintai/dakoku.do?id="&strID, False)
If objHttp.status = 200 Then
    Dim objADO:    Set objADO = WScript.CreateObject("ADODB.Stream")

    objADO.Open
    objADO.Type = 1'adTypeBinary
    objADO.Write objHttp.responseBody

    objADO.Position = 0
    objADO.Type = 2'adTypeText
    objADO.Charset = "Shift_JIS"
    strXML = objADO.ReadText()
Else
    MsgBox("HTTP ERROR !! CODE=" & objHttp.status)
End If

0 件のコメント: