Дубликат этот вопрос
Я пытаюсь создать веб-сервис с Zend_Soap_Server в режиме автообнаружения wsdl, но получаю очень странные эффекты ... вот код:
Сервер:
<?php
require_once('Zend/Soap/AutoDiscover.php');
require_once('Zend/Soap/Server.php');
require_once('Zend/Soap/Wsdl.php');
require_once('library/SoapActions.php');
$wsdl = new Zend_Soap_Autodiscover();
$wsdl->setClass('SoapActions');
if (isset($_GET['wsdl'])) {
$wsdl->handle();
} else {
$server = new Zend_Soap_Server('http://localhost:8083/server.php?wsdl');
$server->setClass('SoapActions');
$server->setEncoding('ISO-8859-1');
$server->handle();
}
Класс SoapActions:
class SoapActions {
/**
* Test function
*
* @param String $a
* @param String $b
* @return String
*/
public function test1($a, $b) {
return "you passed me ".$a." ".$b;
}
/**
* Test function 2
*
* @param String $a
* @param String $b
* @return String
*/
public function test2($a, $b) {
return "you passed me ".$a." ".$b;
}
}
Я пытался использовать функцию test1 и test2, используя класс Zend_Soap_Client, здесь код:
require_once('Zend/Soap/Client.php');
$client = new Zend_Soap_Client("http://localhost:8083/server.php?wsdl");
try {
echo $client->test2("foo","bar"); //this works!
} catch (Exception $e) {
echo $e;
}
try {
echo $client->test1("foo","bar"); //this doesn't work!
} catch (Exception $e) {
echo $e;
}
Я не могу понять, потому что функция test2 работает должным образом, функция test1 возвращает следующее исключение:
Исключение SoapFault: функция [Отправитель]
("test1") не является допустимым методом для
эта услуга в
/usr/local/zend/share/ZendFramework/library/Zend/Soap/Client.php:1121
Трассировки стека:
0 /usr/local/zend/share/ZendFramework/library/Zend/Soap/Client.php(1121):
SoapClient -> __ soapCall ('test1', Array,
NULL, NULL, Array)
1 /usr/local/zend/apache2/htdocs/webservice/client.php(6):
Zend_Soap_Client -> __ вызова ( 'test1',
Array)
2 /usr/local/zend/apache2/htdocs/webservice/client.php(6):
Zend_Soap_Client-> test1 ('foo', 'bar')
3 {main}
Я пытался инвертировать имя функции ... результат невероятный, работает только test2! Я схожу с ума, кажется, что где-то на стороне сервера это сохранить имя функции ...
Может кто-нибудь мне помочь?