SoapClient::__doRequest

Performs a SOAP request

&reftitle.description; public ``string``null```SoapClient::__doRequest` `string` `request` `string` `location` `string` `action` `int` `version` `bool` `oneWay`&false;

Performs SOAP request over HTTP.

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

&reftitle.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.

&reftitle.returnvalues;

The XML SOAP response.

&reftitle.changelog;

&Version; | &Description;
8.0.0 | The type of `oneWay` is &boolean; now; formerly it was &integer;.

&reftitle.examples;

### `SoapClient::__doRequest` example

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

    ?>