(PHP 5, PHP 7, PHP 8)
SoapClient::__doRequest — Выполняет SOAP-запрос
$request,$location,$action,$version,$oneWay = false,$uriParserClass = nullМетод выполняет SOAP-запрос поверх протокола HTTP.
Для реализации других транспортных уровней, дополнительной обработки XML-данных или других целей метод переопределяют в подклассах.
requestXML-запрос по протоколу SOAP.
locationURL-адрес для запроса.
actionДействие по протоколу SOAP.
versionВерсия протокола SOAP.
oneWay
При передаче в параметр oneWay значения true метод не возвращает значение.
Параметр устанавливают, когда ответ не требуется.
uriParserClass
Название класса для разбора URI перенаправления при возврате заголовка "Location".
При передаче значения null метод разбирает URI по предустановленным правилам — на основе функции parse_url().
Метод возвращает XML-данные ответа по протоколу SOAP.
| Версия | Описание |
|---|---|
| 8.5.0 |
Добавили необязательный параметр uriParserClass.
|
| 8.0.0 |
Тип параметра oneWay изменился с int на bool.
|
Пример #1 Пример SOAP-запроса методом SoapClient::__doRequest()
<?php
function Add($x, $y)
{
return $x + $y;
}
class LocalSoapClient extends SoapClient
{
private $server;
function __construct($wsdl, $options)
{
parent::__construct($wsdl, $options);
$this->server = new SoapServer($wsdl, $options);
$this->server->addFunction('Add');
}
function __doRequest(
$request,
$location,
$action,
$version,
$one_way = false,
): ?string {
ob_start();
$this->server->handle($request);
$response = ob_get_contents();
ob_end_clean();
return $response;
}
}
$x = new LocalSoapClient(
null,
[
'location' => 'test://',
'uri' => 'http://testuri.org',
]
);
var_dump($x->Add(3, 4));