1

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

4

3 回答 3

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 错误消息 [取消选中])

凯夫

于 2009-01-13T19:58:27.967 回答
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")

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

于 2009-01-13T20:11:45.570 回答
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

此外,如果您需要安全查看这里 >

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

于 2012-12-20T14:52:06.050 回答