У меня проблема с отправкой XML через объект Microsoft.XMLHTTP в ASP (не .NET). У меня есть элементы CDATA внутри некоторых узлов XML, и я получаю эту ошибку при попытке отправки.
Ошибка msxml3.dll "80070005" Доступ запрещен.
Прежде всего, это касается только CDATA. Если я удалю его, все будет в порядке. Я немного погуглил и обнаружил, что мне нужно создать объект MSXML2.ServerXMLHTTP, НО хостинг-сервер, похоже, не поддерживает это, и я получаю ошибку неверного запроса ...
Вот код отправки ASP:
Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "POST", m_sURL, False
xmlhttp.Send m_sXMLString
Итак, есть ли способ отправить XML с CDATA с помощью Microsoft.XMLHTTP? Спасибо!





Прежде всего, вам не следует использовать Microsoft.XMLHTTP в ASP. Это не потокобезопасно, и будут вызывает загадочный сбой вашего приложения и других сайтов клиентов, если вы используете общую платформу.
Вместо этого вы должны использовать MSXML2.ServerXMLHTTP.
Вы также должны установить заголовок типа контента:
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.setRequestHeader "Content-Type", "text/xml"
xmlhttp.Open "POST", m_sURL, False
xmlhttp.Send m_sXMLString
И последнее: не используйте пару «имя-значение» для контента, который вы публикуете на удаленный сервер. Просто отправьте сам XML.
Не могли бы вы опубликовать сообщение об ошибке, которое вы получаете, не забудьте отключить удобные сообщения об ошибках HTTP в своем браузере (если IE Инструменты -> Параметры -> Дополнительно -> Показывать понятные сообщения об ошибках HTTP [снимите отметку])
Кев
Спасибо за ответы. Какая именно ошибка вам нужна?
Если я использую Microsoft.XMLHTTP, я получаю
msxml3.dll error '80070005'
Access is denied
в этой строке:
xmlhttp.Send m_sXMLString ' XML contains CDATA
Если я использую MSXML2.ServerXMLHTTP, я получаю внутреннюю ошибку сервера (500) здесь:
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
О, и у меня есть заголовок. Я просто не разместил это здесь.
Да, наверное, я так и сделаю. Проблема в том, что если у них их нет, мне нужно найти способ обойтись (не могу изменить хостинг).
Это может помочь ...
Dim xml, textResponse
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
'Server.CreateObject("Microsoft.XMLHTTP")
xml.setOption 2, 13056 ' Say bye to SSL error
xml.setTimeouts 30000, 30000, 30000, 30000 ' milliseconds
xml.Open "POST", "http://www.pathtoyourfile/send", False
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.Send "user=bloggs"
textResponse = xml.responseText 'Parse the response if you want
Set xml = Nothing 'Clean up
Также, если вам нужна безопасность, посмотрите здесь>
http://objectmix.com/xml-soap/87408-sending-post-variables-using-msxml2-serverxmlhttp-3-0-a.html
Я бы посоветовался с вашим хостером, чтобы узнать, правильно ли у них установлены и настроены библиотеки MSXML.