我正在尝试从以下SOAP请求中删除'ser'属性:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://localhost/server">
<soapenv:Header/>
<soapenv:Body>
<ser:eRoamingChargeDetailRecord>
<SessionID>?</SessionID>
</ser:eRoamingChargeDetailRecord>
</soapenv:Body>
</soapenv:Envelope>
我希望它看起来像这样:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="localhost/blah">
<soapenv:Header/>
<soapenv:Body>
<eRoamingChargeDetailRecord xmlns:ns2="localhost/blah" xmlns="localhost/blah">
<SessionID>?</SessionID>
</eRoamingChargeDetailRecord>
</soapenv:Body>
</soapenv:Envelope>
但是,当我手动删除此前缀时,服务器会返回以下错误:
Procedure 'eRoamingChargeDetailRecord' not present
SOAP服务器在PHP中设置如下:
if (isset($_GET['wsdl'])) {
ini_set('soap.wsdl_cache_enabled', 0);
$soapAutoDiscover = new \Zend\Soap\AutoDiscover(new \Zend\Soap\Wsdl\ComplexTypeStrategy\ArrayOfTypeSequence());
$soapAutoDiscover->setBindingStyle(array('style' => 'document'));
$soapAutoDiscover->setOperationBodyStyle(array('use' => 'literal'));
$soapAutoDiscover->setClass('\\App\\Helpers\\Soap\\SoapFunctions');
$soapAutoDiscover->setUri('http://localhost/server');
$soapAutoDiscover->handle();
} else {
$soap = new \Zend\Soap\Server('http://localhost/server?wsdl', array("soap_version" => SOAP_1_1));
$soap->setObject(new \Zend\Soap\Server\DocumentLiteralWrapper(new \App\Helpers\Soap\SoapFunctions()));
$soap->handle();
}
}
功能是:
/**
* This method takes ...
*
* @param string $SessionID
* @return string
*/
public function eRoamingChargeDetailRecord($SessionID) {
return "hello2 {$SessionID}";
}
如何删除此ser前缀?
I've found similar questions on SO, but these are related to Java