SoapClient::__doRequest

(PHP 5, PHP 7, PHP 8)

SoapClient::__doRequestВыполняет SOAP-запрос

Описание

public SoapClient::__doRequest(
    string $request,
    string $location,
    string $action,
    int $version,
    bool $oneWay = false,
    ?string $uriParserClass = null
): ?string

Метод выполняет SOAP-запрос поверх протокола HTTP.

Для реализации других транспортных уровней, дополнительной обработки XML-данных или других целей метод переопределяют в подклассах.

Список параметров

request

XML-запрос по протоколу SOAP.

location

URL-адрес для запроса.

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));