SoapClient не возвращает результат, который должен

Когда я тестирую этот WSDL с помощью SoapUI, я получаю реальный результат, он просто добавляет к числам:

$client = new SoapClient("http://localhost:8080/calculator?wsdl");

$result = $client->add(3,3);

print_r($result);

Это возвращает:

stdClass Object
(
    [return] => 0
)

Но должно возвращать 6. Как и в SoapUI.

Некоторая отладка:

print_r($client->__getFunctions());
print_r($client->__getTypes());

Array
(
    [0] => addResponse add(add $parameters)
)
Array
(
    [0] => struct add {
         int arg0;
         int arg1;
    }
    [1] => struct addResponse {
         int return;
    }
)

person Jaanus    schedule 02.12.2012    source источник
comment
Создайте экземпляр SoapClient с параметром trace, установленным в true, и сравните $client->__getLastRequest(); с xml, отправленным soapui.   -  person dev-null-dweller    schedule 02.12.2012
comment
используйте nusoap :) в конце концов вам все равно придется.   -  person povilasp    schedule 02.12.2012


Ответы (1)


addResponse Ожидается только один параметр, поэтому вам нужно передать его массивом или объектом:

$params = array(
    'arg0' => 3,
    'arg1' => 3
);

//OR
//$params = new stdClass;
//$params->arg0 = 3;
//$params->arg1 = 3;

$result = $client->add($params);
person dev-null-dweller    schedule 02.12.2012