首页 > 解决方案 > Excel VBA MSXML2.XMLHTTP60 PUT 请求在“发送”操作时失败

问题描述

我正在使用 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 打断,并显示以下消息:

第一个警报

我点击DebugJiraService.send body在代码上标记了该部分

代码上的标记区域

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

这种方法不能

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

知道我在这段代码中做错了什么吗?

标签: excelvbajira-rest-api

解决方案


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

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


推荐阅读