【问题标题】:PHP: Default SOAP XML NamespacePHP:默认 SOAP XML 命名空间
【发布时间】:2017-01-06 13:57:22
【问题描述】:

我使用的是 PHP 5.6,因为这是客户端使用的。我必须在不使用 WSDL 的情况下通过 SOAP 与 Microsoft WCF 服务进行通信。

我或多或少在那里,但是如果有一种方法可以为 SOAP 信封设置默认的 XML 命名空间,那会让我的生活变得更轻松。

我认为在 SoapClient 构造函数上设置 'URI' 选项可以做到这一点,但它没有。

WCF 服务设置此默认命名空间,因此如果没有它,我必须使用该命名空间显式标记所有SoapVar 变量才能使其工作。

是否可以通过SoapClient 设置默认命名空间?

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
               xmlns="http://tempuri.org/">
<!-- SOAP Contents -->
</soap:Envelope>

默认命名空间为http://tempuri.org/

【问题讨论】:

  • 你能展示你如何实例化 SoapClient 的代码吗?构造函数中的 $options 参数有一个 uri 选项,用于将命名空间设置为非 wsdl 模式。

标签: php xml wcf soap


【解决方案1】:

如果您问这个问题,那么您可能正在使用 WSDL 模式。 WSDL 定义了默认命名空间。

否则the docs帮你:

如果工作在非 WSDL 模式,必须设置 location 和 uri 选项,其中 location 是发送请求的 SOAP 服务器的 URL,uri 是 SOAP 服务的目标命名空间。

【讨论】:

  • 奇怪,肯定没有使用 WSDL 模式,设置 uri 选项对肥皂信封的默认命名空间没有影响。我正在使用的客户端使用的是 php 5.4,所以这可能是一个因素
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 2020-01-29
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多