私はWSDLを生成しています。クライアントの名前と一致するように応答の関数名を変更する必要があります(これは制御できません)。私は<ns1:fooFunctionAcknowledgement>
を読み取るためのライン<ns1:fooFunctionResponse>
が必要Zend Soap Serverのレスポンス関数名を変更する方法は?
<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>
:
は、ここで私が取得していますWSDL応答です。
$element = [
'name' => $functionName . 'Response',
'sequence' => $sequence
];
:私はそれは、関数の命名を制御のように見えるのZendのフレームワーク(
Autodiscover.php
ライン514)にこのコード行を見つけた
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();
}
:ここ
は、私のSOAPサーバーでありますしかし、これを変更すると、親メソッドは決して呼び出されません。私はこの問題をどのように解決するのか分かりませんでした。
しかし、私は私のAPIをテストするためにSOAPUIを使用していて、SOAPUI Iからいつも、この行が関数名を変更しないことを私が発見した私は、文字列を変更するものは何でもResponse
の代わりを参照してください。 Chromeでは、Acknowledgement
と表示されます。
なぜSoapUIは異なる関数名を表示しますか?
もし私が 'response()'を含んでいるメソッドが呼び出されたと確信したら、私はそれを行います。私が知る限り、そのメソッドは呼び出されていません。 – f7n
私はちょうどこのメソッドが呼び出されていることを確認して見ましたが、SoapUIは何か変なことをしています。 – f7n