как вызвать мыльный веб-сервис со входными параметрами структуры?

Я хочу взаимодействовать с SOAP (как клиент) и не могу получить правильный синтаксис для входных параметров. У меня есть URL-адрес WSDL, который я протестировал с SoapUI, и он возвращает результат правильно. В WSDL определены две функции, но мне нужна только одна («Первая функция» ниже). Вот скрипт, который я запускаю, чтобы получить информацию о доступных функциях и типах:

$client = new SoapClient("http://example.com/webservices?wsdl");
var_dump($client->__getFunctions());
var_dump($client->__getTypes());

И вот результат, который он генерирует:

array(
[0] => "FirstFunction Function1(FirstFunction $parameters)",
[1] => "SecondFunction Function2(SecondFunction $parameters)",
);

struct Amount {
anyURI Identifier;
Information charge;
string referenceCode;
}

struct Information {
string description;
decimal amount;
string code;
}

В соответствии с приведенным выше результатом я разработал мой клиент с nusoap а также php как показано ниже:

 class Information
{
public $description;
public $amount;
public $code;
}

class Amount {

public $Identifier;
public $charge;
public $referenceCode;
}
$charge = new Information();
$charge->description = "ROUTE=XXX|abc=".$code;
$charge->amount = "NULL";
$charge->code = $chargecode;

$params = new Amount();
$params->Identifier =$num;
$params->charge = $charge;
$params->referenceCode = $refcode;

$header = new SoapHeader('key', $key);

$client->__setSoapHeaders($header);try
{
$res = $client->__call('charge',array('parametrs'=>$params));

print_r($res->return);
}
catch(PDOException $e)
{
print_r($e->getMessage());
}

В результате я получаю следующую ошибку:

Uncaught SoapFault exception: [soapenv:Server] unknown

1

Решение

На мой взгляд, лучший способ добиться этого — использовать генератор WSDL для php, такой как PackageGenerator проект. Он абстрагирует весь процесс, поэтому вы имеете дело только с объектами, не беспокоясь о SOAP.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]