php8.5
Home/ Manual/ soap / soapclient/ SoapClient::__doRequest

SoapClient::__doRequest

PHP function Edit on GitHub ✎

(PHP 5, PHP 7, PHP 8)

Performs a SOAP request

Description

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

Performs SOAP request over HTTP.

This method can be overridden in subclasses to implement different transport layers, perform additional XML processing or other purpose.

Parameters

request

The XML SOAP request.

location

The URL to request.

action

The SOAP action.

version

The SOAP version.

oneWay

If oneWay is set to true, this method returns nothing. Use this where a response is not expected.

uriParserClass

The classname to use for parsing the redirection URI when a "Location" header is received in the response, or null to use the default, parse_url() based parsing.

Return Values

The XML SOAP response.

Changelog

VersionDescription
8.5.0The optional parameter uriParserClass has been added.
8.0.0The type of oneWay is Boolean now; formerly it was Integer.

Examples

SoapClient::__doRequest() example

php
<?php

function Add($x, $y)
{
    return $x + $y;
}

class LocalSoapClient extends SoapClient
{
    private $server;

    public function __construct($wsdl, $options)
    {
        parent::__construct($wsdl, $options);
        $this->server = new SoapServer($wsdl, $options);
        $this->server->addFunction('Add');
    }

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

?>

Source: reference/soap/soapclient/dorequest.xml · from the official PHP manual (php/doc-en)