设置SOAP-ENV Nusoap的值

时间:2014-03-18 18:19:11

标签: php soap soap-client nusoap

如何更改我的Soapenv:Envelope参数:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ejb="http://ejb.gateway.ebpp.fawryis.com/" 
xmlns:ns3678="http://tempuri.org">

到此:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ejb="http://ejb.gateway.ebpp.fawryis.com/">

如何设置nusoap客户端Soapenv,以便它可以与第二种格式相同?

同样在每个元素中都有xmlns空属性:

<process xmlns="http://ejb.gateway.ebpp.fawryis.com/">
<arg0 xmlns=""><Request xmlns="">

如何删除这些xmlns属性?


这是我的代码:


$client = new nusoap_client($wsdl_path,   TRUE);

        $client->namespaces = array(
        'SOAP-ENV'=>"http://schemas.xmlsoap.org/soap/envelope/",
        'ejb'=>"http://ejb.gateway.ebpp.fawryis.com/"
);
$parameters = array(//the parameters );
$result = $client->call("process", $parameters);

谢谢

1 个答案:

答案 0 :(得分:0)

我知道您可以分叉Nusoap项目并自定义nusoap.php源代码以准确返回您所要求的内容。但请注意,有些人告诉我们,我们不需要打扰这个前缀SOAP-ENV。如果您不关心序列化哪一个(SOAP-ENV或soap前缀),请继续使用原始的nusoap项目。请记住输入相同的命名空间。

这里有一些额外的信息:

  

您可以使用任何您喜欢的字符串作为命名空间前缀,只要   它映射到适当的命名空间名称。规范之所以如此   告诉我们符号约定是那个前缀   名称(例如,SOAP-ENV)不是规范性的。

来源:SOAP-ENV vs. soapenv

  

...只要soap和SOAP-ENV引用相同的名称空间URI,那么   一切都会好的。

来源:SOAP-ENV: vs. soap:Envelope

  

...可以是任何允许的字符串 - 它与XML解析器无关   只要给出了正确的命名空间URL。

来源:SOAP Envelope namespace