(PHP 5, PHP 7, PHP 8)
SoapClient::__soapCall — Вызывает SOAP-функцию
$name
,$args
,$options
= null
,$inputHeaders
= null
,&$outputHeaders
= null
Это низкоуровневая функция API, которая позволяет сделать SOAP-вызов.
Обычно в режиме WSDL функции SOAP вызываются как методы объекта
SoapClient. Этот метод полезен в режиме, отличном от WSDL, когда
soapaction
неизвестен, uri
отличается от
URI по умолчанию или при отправке и/или получении SOAP-заголовков.
В случае возникновения ошибки вызов SOAP-функции может привести к исключению или к возврату объекта SoapFault, если исключения отключены. Чтобы проверить, что вызов функции завершился неудачей, поймав исключение SoapFault, проверьте результат с помощью is_soap_fault().
name
Имя вызываемой SOAP-функции.
args
Массив аргументов, передаваемых в функцию. Это может быть упорядоченный или ассоциативный массив. Обратите внимание, что большинство SOAP-серверов требуют предоставлять имена параметров, и в этом случае это должен быть ассоциативный массив.
options
Ассоциативный массив настроек, передаваемых клиенту.
Настройка location
- URL удалённой веб-службы.
Настройка uri
- целевое пространство имён SOAP-службы.
Настройка soapaction
- действие для вызова.
inputHeaders
Массив заголовков, отправляемых вместе с SOAP-запросом.
outputHeaders
Если указан, то этот массив будет заполнен заголовками из SOAP-ответа.
Функции SOAP могут возвращать одно или несколько значений. Если функция SOAP возвращает только одно значение, то возвращаемое значение будет скаляром. Если возвращается несколько значений, то вместо них возвращается ассоциативный массив именованных выходных параметров.
В случае возникновения ошибки, если объект SoapClient был объявлен
с опцией exceptions
со значением false
,
будет возвращён объект SoapFault.
Пример #1 Пример использования SoapClient::__soapCall()
<?php
$client = new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);
$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c), NULL,
new SoapHeader(), $output_headers);
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$client->SomeFunction($a, $b, $c);
$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c),
array('soapaction' => 'some_action',
'uri' => 'some_uri'));
?>