Excel 具有凭据的VBA httpWebRequest

Excel 具有凭据的VBA httpWebRequest,excel,vba,Excel,Vba,我需要从云服务获取一些数据 这是我目前的代码: Option Explicit Sub Test() Call GetHTTPResult("https://venice.unit4.com/WebConnect/api/ZZKlesserRob/2017/Balance/GetBalance?AccountNumber=604&BeginMonth=1&EndMonth=1", "username", "password") End Sub Function GetHTT

我需要从云服务获取一些数据

这是我目前的代码:

Option Explicit
Sub Test()

Call GetHTTPResult("https://venice.unit4.com/WebConnect/api/ZZKlesserRob/2017/Balance/GetBalance?AccountNumber=604&BeginMonth=1&EndMonth=1", "username", "password")

End Sub

Function GetHTTPResult(sURL As String, Optional username As String, Optional password As String) As String




Dim XMLHTTP As Object, sResult As String

Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

username = "dummy"
password = "dummypass"

XMLHTTP.Open "GET", sURL, False
XMLHTTP.setRequestHeader "Authorization", "Basic" & Base64Encode("username" & ":" & "password")
XMLHTTP.Send

Debug.Print "Status: " & XMLHTTP.Status & " - " & XMLHTTP.StatusText

sResult = XMLHTTP.ResponseText
GetHTTPResult = sResult

Set XMLHTTP = Nothing
End Function
如果没有凭据,它会给我“401-Unauthorized”-响应,我想这很好

不过,我确实有必要的凭证可供使用,但我似乎无法解决
Base64
编码带来的问题

我该怎么办

提前谢谢

通过检查,我认为您的
授权
标题中缺少
空格

var request = new XMLHttpRequest();
...
request.setRequestHeader("Accept","application/xml");
request.setRequestHeader("Authorization","Basic " + Base64.encode ("User:Password"));
因此,你应该阅读:

XMLHTTP.setRequestHeader "Authorization", "Basic " & Base64Encode(username & ":" & password)
此外,您应该使用
application/xml
application/json
向请求添加
Accept
头,以指定请求数据的格式