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が参考になります。
コメント