从VBA调用Rest API – “与服务器的连接exception终止”

我正在尝试从Excel VBA RESTfull API。 我已经在C#中使用了一个工作版本:

//Request Auth Token var client = new RestClient("https://api.xxx.com/exp/oauth2/v1/access_token_cors"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddParameter("application/x-www-form-urlencoded", "response_type=token&grant_type=client_credentials&client_id=1234&client_secret=1234&scope=", ParameterType.RequestBody); IRestResponse response = client.Execute(request); 

需要将此代码移植到VBA。 我写:

 Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") MyRequest.Open "POST", "https://api.xxx.com/exp/oauth2/v1/access_token_cors", False MyRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" PostData = """application/x-www-form-urlencoded"", ""response_type=token&grant_type=client_credentials&client_id=1234&client_secret=1234&scope=""" MyRequest.send (PostData) 

当我运行VBA版本时,我收到错误“与服务器的连接exception终止”。发送行

由于它在C#中工作,因此不能成为防火墙或服务器问题。 我能做些什么才能让它发挥作用? 我搜索过类似的问题,但没有一个适用于我的情况。

您应该能够执行以下操作:

 Set request = CreateObject("WinHttp.WinHttpRequest.5.1") request.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" request.Open "POST", URL, False 'Your missing the actual url request.Option(4) 'Ignore SSL Errors. request.Option(12) 'Allow redirect to SSL request.send("response_type=token&grant_type=client_credentials&client_id=1234&client_secret=1234&scope=") 

我假设问题是,您没有定义的URL。 api很可能是SSL,所以你应该考虑到这一点,也是为什么在输入字符串时创建PostData原因。 你也有很多引号,我假设你这样做是为了正确发送它们,我相信这是关闭的。 以上应该适合你。