【问题标题】:php soap question: howto create custom namespacephp soap问题:如何创建自定义命名空间
【发布时间】:2010-01-31 02:48:38
【问题描述】:

我正在使用 php 肥皂。我无法让我的肥皂主体包含自定义命名空间。 这是我想要的一个例子:

<?xml version='1.0' encoding='UTF8'?><soapenv:Envelope  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <tns:MyCall xmlns:tns="my.sx"><tns:op>getStuff</tns:op><tns:args />
    </tns:MyCall>
  </soapenv:Body>
</soapenv:Envelope>

我无法让名为 tns 的命名空间出现在正文中,或者元素 op 和 args 中。

谁能建议这是怎么做的?

我的代码如下所示:

$client = CreateSoapClient();

try{
  $result = $client->__soapCall(
   'MyCall',
   array(), // no params
array(
    'uri' => 'urn:Myurn',
    'soapaction' => 'urn:Myurn'
));
?>

【问题讨论】:

    标签: php api soap


    【解决方案1】:

    您需要在 WSDL 中定义名称空间。使用 Zend WSDL 自动生成器可能是最简单的,我相信它可以让您设置名称空间。如果您需要更多信息,请告诉我。

    【讨论】:

    • 您好本吉,感谢您的回复。那时我可能非常接近,因为我在 xml 和 services.xml 中有 wdsl 我是否可以通过将 xml 放入字符串 ala 中使用 wdsl 的本地副本创建与服务器的连接: $trace_on, 'connection_timeout' => 5, 'soap_version' => SOAP_1_1, 'exceptions' => 0, 'location' => $hostname, 'uri' => ' urn:myURN', 'style' => SOAP_DOCUMENT, 'use' => SOAP_ENCODED )); ?> 还是我把 wdsl 文件放在服务器上?如果是这样,该怎么称呼它?非常感谢
    • 我会将 WSDL 放在服务器上,然后您可以在上面的代码中使用 $wsdl 的 WSDL URI。另外,我强烈建议在您的选项数组中将例外设置为 1 - 使测试更容易。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2012-04-02
    • 2015-10-24
    相关资源
    最近更新 更多