WinHttp.WinHttpRequestオブジェクトを使って使ってHttp PostでByte配列のデータを送信するExcel VBAプログラムです。
WinHttp.WinHttpRequestを使う際には、
1. ExcelのMicrosoft Visual Basic エディタのメニューバーから「ツール->参照設定」とたどる。
2. 表示されたダイアログからMicrosoft WinHTTP Serviceにチェックを入れる。
という手順が必要です。
Byte配列をPOST
StringをPOST
Windows HTTPの使い方に関しては、MicrosoftのRetrieving Data Using Visual Basicが参考になります。
WinHttp.WinHttpRequestを使う際には、
1. ExcelのMicrosoft Visual Basic エディタのメニューバーから「ツール->参照設定」とたどる。
2. 表示されたダイアログからMicrosoft WinHTTP Serviceにチェックを入れる。
という手順が必要です。
Byte配列をPOST
Private Const BOUNDARY As String = "SOMETHING" Private Function httpPostServletByte(url As String, data() As Byte) As Byte() On Error GoTo e Dim WinHttpReq As WinHttp.WinHttpRequest If (WinHttpReq Is Nothing) Then Set WinHttpReq = New WinHttpRequest End If WinHttpReq.Open "POST", url, False WinHttpReq.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded; boundary=" & BOUNDARY WinHttpReq.send data Dim response() As Byte: response = WinHttpReq.ResponseBody httpPostServletByte = response Set WinHttpReq = Nothing Exit Function e: Set WinHttpReq = Nothing Debug.Print "httpPost Error:" & Err.Description End Function
StringをPOST
Private Const BOUNDARY As String = "SOMETHING" Private Function httpPostServlet(url As String, data As String) As String On Error GoTo e Dim dataArray() As Byte: ReDim dataArray(Len(data) - 1) dataArray = StrConv(data, vbUnicode) Dim WinHttpReq As WinHttp.WinHttpRequest If (WinHttpReq Is Nothing) Then Set WinHttpReq = New WinHttpRequest End If WinHttpReq.Open "POST", url, False WinHttpReq.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded; boundary=" & BOUNDARY WinHttpReq.send dataArray Dim response As String: response = WinHttpReq.ResponseText httpPostServlet = response Set WinHttpReq = Nothing Exit Function e: Set WinHttpReq = Nothing Debug.Print "HttpPost Error:" & Err.Description End Function
Windows HTTPの使い方に関しては、MicrosoftのRetrieving Data Using Visual Basicが参考になります。
コメント