SoapClient::__doRequest
PHP Manual
PHP Manual»SoapClient»SoapClient::__doRequest

SoapClient::__doRequest

(PHP 5, PHP 7, PHP 8)

SoapClient::__doRequest — SOAP リクエストを実行する

説明

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

HTTP 上で SOAP リクエストを実行します。

異なるトランスポート層や追加の XML を処理する、もしくは他の目的のために サブクラスでこのメソッドをオーバーライドする事ができます。

パラメータ

request

XML SOAP リクエスト

location

リクエスト先の URL

action

SOAP アクション

version

SOAP バージョン

oneWay

oneWay に true を設定すると、このメソッドは何も返しません。 レスポンスが不要なときにこれを使用します。

uriParserClass

レスポンスで "Location" ヘッダを受信した場合に、 リダイレクト URI のパースに使用するクラス名。 null を指定すると、デフォルトの parse_url() ベースのパースが使用されます。

戻り値

XML SOAP レスポンス

変更履歴

バージョン 説明
8.5.0 オプションのパラメータ uriParserClass が追加されました。
8.0.0 oneWay の型は bool になりました。 これより前のバージョンでは、int でした。

例

例1 SoapClient::__doRequest() の例

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

?>

To Top