Я создаю WSDL, и мне нужно изменить имя функции в ответе, чтобы совместить имя с клиентом (с которым я не контролирую).Как изменить имя функции ответа в Zend Soap Server?
Вот ответ WSDL я получаю:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost:8000/soap/index.php?wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:fooFunctionResponse>
<return xsi:type="xsd:boolean">true</return>
</ns1:fooFunctionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
мне нужна линия <ns1:fooFunctionResponse>
читать <ns1:fooFunctionAcknowledgement>
.
Вот мое мыло сервер:
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('SoapFunction');
$soapAutoDiscover->setUri(http://localhost:8000/soap/index.php);
$soapAutoDiscover->handle();
} else {
$soap = new \Zend\Soap\Server(null, array("soap_version" => SOAP_1_2, 'uri' => 'http://localhost:8000/soap/index.php?wsdl', 'classmap' => array('Identification', 'RemoteIdentification')));
$soap->setClass('SoapFunction');
$soap->handle();
}
Я нашел эту строку кода в рамках Zend (Autodiscover.php
линии 514), который выглядит, как он контролирует именование функции:
$element = [
'name' => $functionName . 'Response',
'sequence' => $sequence
];
Но изменение этого ничего не делает, родительский метод никогда не вызывается. Я не знаю, как решить эту проблему, пожалуйста, помогите.
Я обнаружил, что эта строка меняет имя функции, однако я использую SoapUI, чтобы проверить мой API, и из SoapUI I всегда см Response
вместо то, что я изменить строку. В Chrome я вижу Acknowledgement
.
Почему SoapUI показывает другое имя функции?
Я бы сделал это, если бы был уверен, что был вызван метод, содержащий вызов 'response()'. Насколько я знаю, этот метод не называется. – f7n
Я только что проверил и увидел, что метод вызван, но SoapUI делает некоторые странные вещи, см. Мое редактирование. – f7n