Microsoft.XMLHTTP и CDATA - PullRequest
       16

Microsoft.XMLHTTP и CDATA

1 голос
/ 13 января 2009

У меня проблема с отправкой 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? Спасибо!

Ответы [ 3 ]

1 голос
/ 13 января 2009

Спасибо за ответ. Какая именно ошибка вам нужна?

При использовании 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")

О, и у меня есть заголовок. Я просто не разместил это здесь.

1 голос
/ 13 января 2009

Прежде всего, вы не должны использовать 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 Tools -> Параметры -> Дополнительно -> Показать дружественные сообщения об ошибках HTTP [снять флажок])

Кев

0 голосов
/ 20 декабря 2012

Это может помочь ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...