我正在尝试使用在消息中使用超过 1 个命名空间的 nuSOAP(因为我在这里绑定到 PHP4)访问 WebService。那可能吗?
示例请求消息如下所示:
<soapenv:Envelope ...
xmlns:ns1="http://domain.tld/namespace1"
xmlns:ns2="http://domain.tld/namespace2">
<soapenv:Header/>
<soapenv:Body>
<ns1:myOperation>
<ns2:Person>
<ns2:Firstname>..</ns2:Firstname>
..
</ns2:Person>
<ns1:Attribute>..</ns1:Attribute>
</ns1:myOperation>
</soapenv:Body>
</soapenv:Envelope>
我试图遵循:
$client = new nusoap_client("my.wsdl", true);
$params = array(
'Person' => array(
'FirstName' => 'Thomas',
..
),
'Attribute' => 'foo'
);
$result = $client->call('myOperation', $params, '', 'soapAction');
希望 nuSOAP 会尝试将这些名称与正确的名称空间和节点匹配。然后我尝试使用soapval() 来生成元素及其命名空间——但如果我调用一个操作,nuSOAP 会创建以下请求:
<SOAP-ENV:Envelope ...>
<SOAP-ENV:Body>
<queryCCApplicationDataRequest xmlns="http://domain.tld/namespace1"/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
所以在“匹配”阶段出现了问题。