Excel VBA MSXML2.XMLHTTP60 PUT请求在“发送”操作上失败

时间:2019-07-10 15:20:02

标签: excel vba jira-rest-api

我正在使用VBA在Excel上与Jira集成。

我能够使用Jira的API安全登录(使用POST)并检索Jira问题(使用GET)。

现在我正在尝试更新问题,Jira API上的HTTP动词是GET。这应该不成问题,但事实是我什至无法提出请求。

这是我当前的代码-它基于POST代码,但是我不确定是否缺少其他一些参数。

我省略了一些变量声明-这不是问题!

Public JiraService As New MSXML2.XMLHTTP60
JiraDataUrl = "https://atlassian.XXXXXXXX.com/jira/rest/api/2/issue/" & JiraId
body = "{""fields"" : {""customfield_13800"":""2011-10-03""}}"

Call JiraLogin(user, pass) 'This calls another Sub that log into Jira

JiraService.Open "PUT", JiraDataUrl, False
JiraService.setRequestHeader "Content-Type", "application/json"
JiraService.setRequestHeader "Accept", "application/json"
JiraService.setRequestHeader "X-Atlassian-Token:", "nocheck"
JiraService.send body

jsonText = JiraService.responseText
sStatus = JiraService.Status

当我运行脚本时,它会被excel中断并显示以下消息:

First alert

我点击Debug,然后在代码上标记了JiraService.send body部分

Marked area on the code

如果我点击播放,我会得到最后的错误(This method cannot be called after the send method has been called),这对我来说没有任何意义:

This methodcannot

如果我将PUT替换为POST,它将正常运行,但是Jira API返回405 HTTP错误-因为我要使用的方法需要PUT。

任何关于我在此代码中做错什么的想法吗?

1 个答案:

答案 0 :(得分:1)

我现在正在做同样的事情,并且我发现,更新问题需要异步连接:

JiraService.Open "PUT", URL, True

在这种情况下

JiraService.send data

将成功,但是JiraService.status返回1223!但是,问题字段将被更新...

与MSXML2.XMLHTTP60一起讨论了相同的“问题”,看来1223代码是一种“成功代码”: https://social.msdn.microsoft.com/Forums/en-US/c4911cd8-caba-4c25-b71c-fe2e1a7ef8be/update-sharepoint-list-metadata-using-rest-from-vba-using-msxml2xmlhttp60