尝试使用 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 请求时出现奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章
SolidWorks2014无法显示Simulation插件
坐标系从 SolidWorks 错误地导入到 Meshlab