尝试使用 SolidWorks VBA 发出 HTTP 请求时出现奇怪的错误

Posted

技术标签:

【中文标题】尝试使用 SolidWorks VBA 发出 HTTP 请求时出现奇怪的错误【英文标题】:Strange errors when trying to make HTTP requests with SolidWorks VBA 【发布时间】:2015-12-08 08:54:38 【问题描述】:

我需要将 Autodesk PLM 360 服务集成到 SolidWorks 并使用 VBA 来完成。为了发起 HTTP 请求,我使用以下代码:

Dim objHTTP As MSXML2.ServerXMLHTTP
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.setRequestHeader "Content-Type", "application/xml" '<-- Error occurs here
objHTTP.Open "POST", "https://mytenant.autodeskplm360.net/rest/auth/1/login", False
objHTTP.send "<metaFields>" & _
                "<password>MyPassword</password>" & _
                "<userID>MyUserID</userID>" & _
             "</metaFields>"

上述代码的第三行出现以下错误:

当我注释掉违规行时,HTTP 请求返回的状态是“415 - 不支持的媒体类型”。

有没有人可以理解这里的问题?我所做的所有搜索都没有任何帮助。

附:我还应该注意到,同样的问题也出现在 Excel 中,所以这并不是因为 SolidWorks 的 VBA 实现正在做的奇怪的事情。

【问题讨论】:

尝试将setRequestHeader 行移到open 行之后 @barrowc 成功了!谢谢!如果您将其作为解决方案提交,我会接受。 【参考方案1】:

正如@barrowc 在评论中指出的那样,setRequestHeader 命令需要跟在open 命令之后。它应该是这样的:

Dim objHTTP As MSXML2.ServerXMLHTTP
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", "https://mytenant.autodeskplm360.net/rest/auth/1/login", False
objHTTP.setRequestHeader "Content-Type", "application/xml"
objHTTP.send "<metaFields>" & _
                "<password>MyPassword</password>" & _
                "<userID>MyUserID</userID>" & _
             "</metaFields>"

【讨论】:

以上是关于尝试使用 SolidWorks VBA 发出 HTTP 请求时出现奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

SolidWorks二次开发

SolidWorks填写模型属性辅助工具

SolidWorks2014无法显示Simulation插件

坐标系从 SolidWorks 错误地导入到 Meshlab

是否可以使用 Apache HTTPClient 4.2.5 发出 HTTP/2 请求?

solidworks怎么识别特征