【问题标题】:PHP SOAP server configuration/implementationPHP SOAP 服务器配置/实现
【发布时间】:2013-06-10 19:46:38
【问题描述】:

我需要实现一个 SOAP 服务器,该服务器将响应充当 SOAP 客户端的第三方应用程序。

服务器应该是PHP的,所以我开始使用nusoap和http://www.wsdltophp.com/来生成骨架。

这是他们给我的 wsdl 文件: http://pastebin.com/YXBbszqE 支持人员说我应该从 Ping 请求开始,因为它是最简单直接的实现方式。

我是新手,非常感谢一些帮助。

这是我目前所拥有的服务器: http://pastebin.com/vARst5t0

并模拟客户端: http://pastebin.com/seG7EmM6

它给了我一个错误: http://pastebin.com/Say6FmF6

非常感谢,伙计们。

编辑: 我发现在服务器上,禁用error_reporting后,我没有收到之前的错误。

我忘了提到我使用加载 wsdl 文件的 nusoap 功能并且没有手动定义每个 complexType,但它仍然无法正常工作,现在我收到以下错误: Operation 'Ping' is not defined in the WSDL for this service。 我确定它就在那里。

【问题讨论】:

  • 代码太多,我很懒。
  • :) 如果这几天不让我头疼,我不会发帖,真的需要有人帮助。

标签: php soap soap-client soapserver


【解决方案1】:

也许它来自您在生成包时选择的选项。实际上,当调用 MySoapServicePing::Ping() 方法时,参数可能未正确发送:是否包含在数组中。所以尝试修改生成行为并再次发送请求。

您还可以查看发送到 SOAP 服务器的 XML 请求,以确保它不是来自请求。要获取 XML 请求,您可以在发送请求后调用 MySoapWsdlClass::getSoapClient()->__getLastRequest() 方法或 $mySoapServicePing->getLastRequest() 方法(取决于生成器的版本)。

如果它改变了什么,请告诉我。

【讨论】:

  • 感谢您的回答。是的,我正在使用 $mySoapServicePing->getLastRequest();输出为:pastebin.com/w793JXGw
  • 如我们所见,请求格式正确,似乎与 WSDL 声明相对应。您是否尝试在收到请求时从 SOAP 服务器调试错误以进行跟踪?
  • 转念一想,是不是 XML 响应格式不正确?实际上,该错误似乎表明 XML 响应格式错误。也许看看它,让我知道;)。
【解决方案2】:

谢谢大家,我最终使用了 php 原生函数,并且配置起来更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多