使用VBA请求将值作为HTTP GET中的参数发送

时间:2016-09-08 21:39:30

标签: vba excel-vba http excel

所以我尝试向我正在使用以下脚本测试的新API发送基本请求:

Sub CalcDemo()
    TargetURL = "https://my-api-url.com"
    Set HTTPReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    HTTPReq.Open "GET", TargetURL, False
    HTTPReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

    postData = "user=myUsername&password=myPassword"
    HTTPReq.send (postData)
    MsgBox (HTTPReq.responseText)

End Sub

但是我收到以下错误消息:HTTP Status 401 - user and password should be specified as parameters on the request。我的印象是postData上面传递的方式意味着它们被作为参数发送,但我想我错了。如何发送一串参数?

2 个答案:

答案 0 :(得分:2)

在我看来,postData的值不是收集变量myUsername或myPassword的值。你必须像这样创建连接数据:

postData = "user=" & myUsername & "&password=" & myPassword

我认为myUsername和myPassword是全局变量。否则你还需要将它们作为参数传递给你的函数。

希望这有帮助!

答案 1 :(得分:1)

正如一条评论建议的那样,您正尝试使用GET命令发送帖子字符串。如果你替换下面的行,它应该工作:

    HTTPReq.Open "GET", TargetURL, False

替换为:

    HTTPReq.Open "POST", TargetURL, False