使用VBA发送脉冲短信

问题描述 投票:0回答:1

这确实是一个微不足道的问题。 我对此很陌生,并尝试在 VBA 中使用 Sendpulse API。它有一个获取授权的方法:https://sendpulse.com/integrations/api#libraries

授权 API 部分的图片

我的VBA代码如下:

    Dim URL As String
    Dim xmlHttp As Object
    Dim data As String
    Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")

    URL = "https://api.sendpulse.com/oauth/access_token"
    data = "grant_type=client_credentials , client_id=-redacted-, client_secret=-redacted--"
    xmlHttp.Open "POST", URL, False                 'False means wait for response after send
    xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlHttp.send data
    Debug.Print xmlHttp.ResponseText

我收到 * ': responseText : "{"error":"unsupported_grant_type","error_description":"授权服务器不支持授权授予类型。","hint":"检查所有必需的参数是否正确"*

技术支持使用“postman”验证输入参数是否有效。我相当确定这是一个 VBA 语法问题。技术支持人员不了解有关 excel/VBA 的 didleysquat。

如果专家的眼睛能看出问题出在哪里,我将不胜感激。

我已经尝试了上面 data=... 中的所有引号组合,例如 数据 = "grant_type=""client_credentials"" 、 client_id=""xxxx"" 、 client_secret=""xxxx"""

但没有任何作用。我什至尝试用冒号代替=。也许标题是错误的? (ps.他们告诉我不需要标头,没有它仍然是一样的)

excel vba xmlhttprequest
1个回答
0
投票

仔细构建您的数据字符串:

' Json skeleton.
Const DataMask As String = "{""grant_type"":""{0}"",""client_id"":""{1}"",""client_secret"":""{2}""}"

Dim Data       As String

' Json data fill.
Data = DataMask
Data = Replace(Data, "{0}", "client_credentials")
Data = Replace(Data, "{1}", "237b4af9c99d0f89bdbd876dcd5a0000")
Data = Replace(Data, "{2}", "a99e7d506d3701c5c04de3db1913eeee")

' Json check.
Debug.Print Data

结果:

{"grant_type":"client_credentials","client_id":"237b4af9c99d0f89bdbd876dcd5a0000","client_secret":"a99e7d506d3701c5c04de3db1913eeee"}
© www.soinside.com 2019 - 2024. All rights reserved.