Использование SOAP в PHP без WSDL
19 февраля 2014
Документация по SoapServer: https://www.php.net/manual/ru/class.soapserver.php
Документация по SoapClient: https://www.php.net/manual/ru/class.soapclient.php
PHP позволяет работать с SOAP в режиме «без WSDL» (non-WSDL). Для этого в конструкторе объектов SoapServer и SoapClient первым аргументом нужно передать значение null (в режиме WSDL в этом параметре передают адрес WSDL-файла).
Далее во втором аргументе (настройки SOAP) нужно завести новый параметр uri и указать в нём пространство имён сервера. А для SoapClient помимо uri нужно завести ещё параметр location и указать там адрес SOAP-сервера, который будет принимать запросы.
Пример кода сервера:
Пример кода клиента:
Архив с примерами файлов сервера и клиента:
my_calculator_no_wsdl.zip (2 Кб)
Документация по SoapClient: https://www.php.net/manual/ru/class.soapclient.php
PHP позволяет работать с SOAP в режиме «без WSDL» (non-WSDL). Для этого в конструкторе объектов SoapServer и SoapClient первым аргументом нужно передать значение null (в режиме WSDL в этом параметре передают адрес WSDL-файла).
Далее во втором аргументе (настройки SOAP) нужно завести новый параметр uri и указать в нём пространство имён сервера. А для SoapClient помимо uri нужно завести ещё параметр location и указать там адрес SOAP-сервера, который будет принимать запросы.
Пример кода сервера:
<?
//Класс обрабатывает запросы из SOAP-сервиса "Мой калькулятор"
include_once('my_calculator_class.php')
//Создаём объект SOAP-сервера
$soap_server = new SoapServer(null, array(
'uri' => 'http://test-site.ru/my_calculator_no_wsdl/', //указываем пространство имён нашего сервера
'soap_version' => SOAP_1_1, //Версия протокола SOAP
'encoding' => 'utf-8', //Кодировка, к которой должно приводиться содержимое запросов
));
//Привязываем к серверу класс, который будет обрабатывать запросы
$soap_server->setClass('my_calculator_class');
//Запуск обработки запросов
$soap_server->handle();
?>
Пример кода клиента:
<?
//Настройки SOAP
$soap_settings = array(
'uri' => 'http://test-site.ru/my_calculator_no_wsdl/', //пространство имён SOAP-сервера
'location' => 'http://test-site.ru/my_calculator_no_wsdl/server.php', //адрес SOAP-сервера для отправки запроса
'soap_version' => SOAP_1_1,
'encoding' => 'utf-8',
'trace' => true, //включение отслеживания конвертов (будут доступны методы __getLastRequest и __getLastResponse)
);
//Клиент
$soap_client = new SoapClient(null, $soap_settings);
//Отправка запроса к SOAP-серверу
$params = array(
'a' => 100,
'b' => 5,
'action' => '/',
);
$r = $soap_client->__soapCall('math_action', array($params));
?>
Архив с примерами файлов сервера и клиента:
my_calculator_no_wsdl.zip (2 Кб)