Странные ошибки при попытке сделать HTTP-запросы с 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.


person tlewis3348    schedule 11.09.2015    source источник
comment
Попробуйте переместить строку setRequestHeader после строки open   -  person barrowc    schedule 11.09.2015
comment
@barrowc Это сработало! Спасибо! Если вы представите это как решение, я приму его.   -  person tlewis3348    schedule 11.09.2015


Ответы (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>"
person tlewis3348    schedule 14.09.2015