我在通过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? 谢谢!
答案 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