Microsoft.XMLHTTP和CDATA

时间:2009-01-13 19:36:24

标签: xml hosting

我在通过ASP(而不是.NET)中的Microsoft.XMLHTTP对象发送XML时遇到问题。我在某些XML节点中有CDATA元素,并且在尝试发送时出现此错误。

msxml3.dll错误'80070005' 访问被拒绝。

首先,这只出现了CDATA。如果我删除它,所有发送都可以。我做了一点谷歌搜索,发现我需要创建一个MSXML2.ServerXMLHTTP对象但托管服务器似乎不支持这个,我得到无效的请求错误...

这是ASP发送代码:

Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")      
xmlhttp.Open "POST", m_sURL, False
xmlhttp.Send m_sXMLString

那么,无论如何使用Microsoft.XMLHTTP发送带有CDATA的XML? 谢谢!

3 个答案:

答案 0 :(得分:1)

首先,您不应该在ASP中使用Microsoft.XMLHTTP。它不是线程安全的,如果你在共享平台上,导致你的应用程序神秘失败和其他客户站点。

您应该使用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错误消息[取消选中])< / p>

千电子伏

答案 1 :(得分:1)

感谢您的回答。 你需要哪个错误?

如果使用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")

哦,我确实有标题。我只是没有在这里发布。

答案 2 :(得分:0)

这可能会有所帮助......

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

此外,如果您需要安全性,请点击此处&gt;

http://objectmix.com/xml-soap/87408-sending-post-variables-using-msxml2-serverxmlhttp-3-0-a.html