尝试使用 SolidWorks 发出 HTTP 请求时出现奇怪的错误 VBA
Strange errors when trying to make HTTP requests with SolidWorks VBA
我需要将 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 - 不支持的媒体类型”。
有没有人能理解这里的问题所在?我所做的所有搜索都没有帮助。
P.S。我还应该注意到,同样的问题也出现在 Excel 中,所以这不是由于 VBA 的 SolidWorks 实施正在做的事情。
正如@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>"
我需要将 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 - 不支持的媒体类型”。
有没有人能理解这里的问题所在?我所做的所有搜索都没有帮助。
P.S。我还应该注意到,同样的问题也出现在 Excel 中,所以这不是由于 VBA 的 SolidWorks 实施正在做的事情。
正如@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>"