【问题标题】:Excel VBA MSXML2.XMLHTTP60 PUT request fail on "send" actionExcel VBA MSXML2.XMLHTTP60 PUT 请求在“发送”操作时失败
【发布时间】:2019-11-20 06:27:22
【问题描述】:

我正在使用 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。

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

【问题讨论】:

    标签: excel vba jira-rest-api


    【解决方案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

    【讨论】:

    • 非常感谢@Dmitry。我得到了相同的状态码(这毫无意义)并且解决方案完美运行!
    • 还有一个答案有更多解释here on Stackoverflow
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多