我正在使用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中断并显示以下消息:
我点击Debug
,然后在代码上标记了JiraService.send body
部分
如果我点击播放,我会得到最后的错误(This method cannot be called after the send method has been called
),这对我来说没有任何意义:
如果我将PUT
替换为POST
,它将正常运行,但是Jira API返回405 HTTP错误-因为我要使用的方法需要PUT。
任何关于我在此代码中做错什么的想法吗?
答案 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