我今天用Delphi 2009(已应用更新3/4)构建的各种delphi演示似乎都会导致我尝试使用的任何localhost Web服务的客户端返回“xml文档必须具有顶级元素“错误
这包括,例如,甚至简单的演示 http://blogs.embarcadero.com/pawelglowacki/2008/12/18/38624
我错过了什么?这有什么不对?非常令人沮丧......
答案 0 :(得分:1)
尝试为HTTPSoapPascalInvoker.Options设置以下选项:
soRootRefNodesToBody
soUTF8InHeader
soUTF8EncodeXML
答案 1 :(得分:1)
您可能遇到的问题是您的apache模块上有什么问题,也许您的cgi脚本在Apache(HTTP 500)上导致严重的内部服务器错误。因此,您的apache会抛出错误,但该错误是HTML格式,而不是XML格式。因此,如果您正在使用Web服务,例如,您希望获得SOAP(这是XML),但您获得的HTML无法识别,因此您的应用程序可能会显示类似“xml文档必须具有顶级元素”的内容或者在我的情况下“客户发现TEXT / HTML的响应内容类型但预期的text / xml”。最糟糕的是,apache error.log不显示任何内容,access.log只会显示500错误(尽管我将其设置为Debug模式)。 我用Wireshark试图解决我的问题。而我发现的是对我上面解释的内容的确认,但我还没有解决我的问题。
答案 2 :(得分:0)
可能您生成的XML数据错误。 每个XML文档都必须具有顶级元素:
<xml version="..">
<topLevelElement>
<element>
...
</element>
<element>
...
</element>
<topLevelElement>
如果缺少此根元素,则反序列化器会抛出异常。
答案 3 :(得分:0)
这很可能意味着您从服务器获取HTML响应,因为加载SOAP库时出错或SOAP库本身出错。无法解析HTML并导致此错误。
代理可以帮助您,但您可能希望查看Wireshark,因为它可以让您非常轻松地嗅探流量,而不仅仅是针对HTTP流量。
答案 4 :(得分:0)
好的 - 这有点陌生 -
我发现这一切都在IIS下工作但在apache上失败了 (eed3si9n的解决方案不适用于apache)
更糟糕的是,我发现在apache下我的基本cgi请求内容字段 在apache下POST是空的 - 但我只是在IIS下部署,它工作得很好
所以要么罪魁祸首是我的apache安装还是有什么东西 apiss与delphi的apache(肯定会被广泛报道并修复)
所以---有没有人知道我应该在这看什么apache配置选项?
感谢您