【问题标题】:Interacting with .net SOAP services using PHP使用 PHP 与 .net SOAP 服务交互
【发布时间】:2012-06-28 14:39:20
【问题描述】:

我有一个从我的网站到基于 .net 的 API 的有效 SOAP 请求。出于某种原因,PHP 似乎在解析响应时遇到了问题。

当我转储响应时,大部分检索到的数据都在一个名为“any”的字符串中。此字符串似乎是返回的 XML 的副本。这个问题太大了,不能贴,不过可以在这里查看回复内容:http://pastie.org/4165973

我尝试在 simplexml 中加载此字符串,但出现错误:“文档末尾有额外内容”。

有没有人遇到过类似的问题?如何解析此响应?

edit 我将 __getLastResponse() 保存到一个文件中,以获取尽可能原始的输出。新的 XML 在这里 http://pastebin.com/3ZtjDbjw

【问题讨论】:

    标签: php xml api soap


    【解决方案1】:

    XML 看起来格式不正确。 <ShipToAddress> 可能不正确,但它包含可能破坏解析器的 CDATA。

    无论如何,通过一个 XML linter (http://xmlsoft.org/xmllint.html) 运行它,看看它要说什么。但是,我的猜测是源 API 要么错误地将其吐出,要么您在打印之前对其进行了处理,因此您提供的实际上并不是实时输出。

    【讨论】:

    • 我正在尝试使用 xmllint 验证响应,但我不熟悉它。我收到错误,因为没有定义 dtd,但我认为架构是在文档中定义的。你知道正确的命令吗?
    • 抱歉,最好的办法是查阅 XMLLint 的文档,或者寻找不同的 linter
    【解决方案2】:

    xml 格式没有错误。相反,这个问题与命名空间有关。我最终在PHP Parse Soap Reponse Issue - SimpleXMLElementParse XML with Namespace using SimpleXML 的帮助下解决了这个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2012-09-15
      • 2010-12-02
      • 1970-01-01
      相关资源
      最近更新 更多