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