Прежде всего вам нужен URL-адрес конечной точки вашего веб-сервиса, который предоставляет вам содержимое wsdl.Как писал @camelsWrittenInCamelCase в своем комментарии, вы должны попробовать https://XXX.YYYY.com/XXXservice.asmx?wsdl
вместо https://XXX.YYYY.com/XXXservice.asmx
.
Далее вам следует обернуть все свои мыльные клиентские вещи в блок try / catch, чтобы получить все возможные исключения ибольшинство информации в случае ошибки.
<code>try {
$client = new \SoapClient(
'https://XXX.YYYY.com/XXXservice.asmx?wsdl',
[
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => true,
'soap_version' => SOAP_1_2,
'trace' => true,
]
);
} catch (\SoapFault $fault) {
echo "<pre>";
var_dump($fault);
echo "
"; echo"
";
var_dump($client->__getLastRequest());
echo "
"; echo"
";
var_dump($client->__getLastResponse());
echo "
";}
Как показано в примере выше, мыльный клиентинициализируется с массивом опций. Мы используем опцию трассировки, чтобы включить трассировку для получения последнего запроса на отправку и ответа. Кроме того, мы используем опцию исключения, чтобы заставить клиента генерировать исключения в случае любой ошибки. Более того, мы отключаем кэшированиеНастройки wsdl пока вы разрабатываете. Если вы собираетесь в производство, этот параметр должен быть установлен на WSDL_CACHE_DISK
или WSDL_CACHE_MEMORY
.
Теперь вам нужно знать, какие функции и типы (сложные типы)ваш веб-сервис предоставляет. Для этого вы можете сделать следующее.
<code>// getting the functions of your webservice
echo "<pre>";
var_dump( $client->__getFunctions() );
echo "
";// получение типов вашего веб-сервиса echo "
";
var_dump( $client->__getTypes() );
echo "
";
Поскольку я не знаю точную область действия вашего веб-сервиса, я просто предположу, что веб-сервис предоставляет метод с именем DetAcData
с двумя параметрами Userid
и Password
.С этой информацией я могу только догадываться, как может выглядеть правильный звонок.Для получения подробной информации мне понадобятся выходные данные __getFunctions()
и __getTypes()
.
Примерный вызов может выглядеть следующим образом.
<code>try {
$client = new \SoapClient(
'https://XXX.YYYY.com/XXXservice.asmx?wsdl',
[
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => true,
'soap_version' => SOAP_1_2,
'trace' => true,
]
);
$data = new \stdClass();
$data->Userid = 'YourUserId';
$data->Username = 'YourUsername';
$result = $client->GetAcData($data);
// $result will be an object
echo "<pre>";
var_dump($result);
echo "
";} catch (\ SoapFault $ fault) {// обработка ошибок}
Более подробно вы можете написатьобъекты данных для каждого сложного типа, упомянутого в функциях и типах, выводимых из вашего веб-сервиса.Вы можете добавить карту классов в массив опций при создании экземпляра мыльного клиента, чтобы каждый ответ и запрос автоматически анализировались в соответствующем объекте данных.Работа с клиентскими классами объясняется в документации php.
Просто попробуйте. Я уверен, что вы получите это самостоятельно.;)