有没有一种方法可以使用 WSDL 模式忽略 PHP Soap 客户端模式中的强制变量?
我们开发了一个与 SOAP 端点通信的应用程序,该应用程序已经运行了 7 年多。最近,SOAP 端点提供商升级了他们的 API,并为我们提供了新的端点和 WSDL。
对于特定调用,他们的文档建议有几个变量是可选的,但是 WSDL 中引用的模式指出这些变量不是可选的。
虽然您可以使用 SOAPUI(忽略架构)发送一些没有这些变量的 XML 并且它可以工作,但当您尝试形成一个对象传递到没有这些变量的 PHP Soap 客户端时,它会拒绝并抛出异常,说明它们是强制性的.
端点提供商拒绝更新其架构,并且我们似乎没有办法使用 PHP Soap 客户端进行调用。
托管您自己的 WSDL 文件。
您可以在本地保存服务的 WSDL,对其进行所需的更改,并让 PHP SOAP 客户端在调用原始 Web 服务时使用此 WSDL。
如果 Web 服务接受参数较少的调用,那么这是绕过 WSDL 中强制参数的一种方法。
但请注意,这可能只是暂时的。他们似乎对网络服务的合同进行了更多限制,但他们没有对服务实现进行更改。这可能会在某个时候完成。如果他们这样做,那么服务本身将强制执行这些参数,并且您将无法解决这个问题。那时,您需要发送服务期望的所有内容。