【发布时间】:2023-03-11 19:38:01
【问题描述】:
关于PHP的SoapClient和SoapServer,WSDL模式的问题。
比方说,我需要为 XML 的某个部分创建一个摘要,其中包含其中的数据。使用 SoapClient 很容易。我从类SoapClient 重载__doRequest() 方法,对某些元素进行散列并将其作为<Hash></Hash> 中的元素<SOAP-ENV:Header/> 附加。
然后我将生成的 XML 发送到调用 parent::__doRequest() 的 SOAPServer。
我需要对响应 XML 做同样的事情。在服务器方面,我遇到了困难。似乎服务器只能将数据作为嵌套数组或对象发送,并且以某种方式插入到客户端的响应 XML 中。我尝试使用SoapServer 的响应发送 XML,然后它返回空 XML。
我真的需要在服务器端解析和修改 XML(制作哈希、数字签名等),但到目前为止,无论我在哪里搜索,我都没有找到答案,所以我真的很感激你帮助。谢谢。
【问题讨论】:
-
我也想知道。请参阅我的问题
http://stackoverflow.com/questions/12692797/how-do-i-catch-data-from-the-xml-content-of-a-soap-request-in-a-php-soapserver,我在其中询问如何从输入 XML 中获取数据(这似乎是在stdClass对象上强制转换的),当然还返回一些 XML(可能是输入的,但可以根据需要进行修改)做) - 但我在任何地方都找不到任何有用的东西。希望您的问题得到解答! -
我取得了一些进展。从输入中获取数据首先使用
file_get_contents ('php://input'),请参阅http://stackoverflow.com/questions/10835336/parsing-soap-response-via-wsdl-soapserver/10955907#10955907。但是我仍然无法按照我的意愿创建返回 XML - 我得到了一些似乎由 soapServer 生成的标准返回值,使用 WSDL 中的 defs 但奇怪的是没有返回消息中指定的顶级,而是名称等于输入一+“响应”。当我发现如何做到这一点时,我会告诉你的。 -
@Maestro13 是的,谢谢 - 我用这个问题link 帮助我从客户端解析 XML,但仍然不知道如何在服务器端创建和修改 XML。我想我们可以解决我们的两个问题,让我们讨论一下,只需将您的任何联系信息通过电子邮件发送给 supervodka (at) gmail dot com,谢谢:)
标签: php soap soapserver