SoapClient
PHP Manual

SoapClient::SoapClient

(PHP 5 >= 5.0.1)

SoapClient::SoapClientSoapClient コンストラクタ

説明

public SoapClient::SoapClient ( mixed $wsdl [, array $options ] )

このコンストラクタは、WSDL モードもしくは 非 WSDL モードで SoapClient オブジェクトを生成します。

パラメータ

wsdl

WSDL ファイルの URI もしくは 非 WSDL モードの場合 NULL

注意:

開発中は、WSDL のキャッシュを php.inisoap.wsdl_cache_ttl で無効にしておくとよいでしょう。 そうしないと、WSDL を変更しても soap.wsdl_cache_ttl で設定した時間が経過するまで それが反映されなくなります。

options

オプションの配列。もし WSDL モードで動作させる場合、 このパラメータはオプションです。非 WSDL モードで動作させる場合、 locationuri オプションを指定する必要があります。ここで、 location はリクエストの送り先である SOAP サーバーの URL、 uri は SOAP サービスのターゲット名前空間です。

style および use オプション は非 WSDL モードでのみ動作します。 WSDL モードでは、これらは WSDL ファイルで指定されます。

soap_version オプションは、 SOAP 1.1 (デフォルト) または SOAP 1.2 クライアントのどちらを使用するかを指定します。

HTTP 認証用として、login および password オプションが使用可能です。 プロキシサーバー経由で HTTP 接続を確立する場合は、 proxy_host, proxy_port, proxy_login および proxy_password の各オプションを使用してください。 HTTPS クライアント証明書による認証には local_certpassphrase を使用します。認証情報は authentication オプションで指定します。認証方式は SOAP_AUTHENTICATION_BASIC (デフォルト) あるいは SOAP_AUTHENTICATION_DIGEST のいずれかとなります。

compression オプションにより、 HTTP SOAP リクエストやレスポンスの圧縮を行うことができます。

encoding オプションは内部的な文字エンコーディングを定義します。 このオプションは SOAP リクエストのエンコーディング (常に utf-8) を変更しませんが、その中の文字列を変換します。

trace オプションはリクエストのトレースを有効にします。 失敗したときにバックトレースが可能となります。 デフォルトは FALSE です。

classmap オプションは WSDL 型を PHP クラスにマッピングするために使用可能です。 このオプションには、キーとしてWSDL 型、値として PHP クラスの名前を持つ配列を指定する必要があります。

boolean のオプション trace を設定すると、 SoapClient->__getLastRequest SoapClient->__getLastRequestHeaders SoapClient->__getLastResponse および SoapClient->__getLastResponseHeaders といったメソッドが使用できるようになります。

exceptions オプションは boolean 値で、soap のエラー時に SoapFault 型の例外をスローさせるかどうかを設定します。

connection_timeout オプションは、SOAP サービスに接続する際のタイムアウト秒数を指定します。 これを使用しても、レスポンスが遅いサービスのタイムアウトを定義することはできません。 サービスのコールが完了するまでの待ち時間を制限するには、設定項目 default_socket_timeout を使用します。

typemap オプションは、型マッピングの配列です。 この配列のキーは type_nametype_ns (名前空間 URI)、from_xml (引数として文字列をひとつ受け取るコールバック) そして to_xml (引数としてオブジェクトをひとつ受け取るコールバック) です。

cache_wsdl オプションは WSDL_CACHE_NONEWSDL_CACHE_DISKWSDL_CACHE_MEMORY あるいは WSDL_CACHE_BOTH のいずれかです。

user_agent オプションは、 User-Agent ヘッダで使用する文字列を指定します。

stream_context オプションは、 context 用のリソースです。

features オプションは SOAP_SINGLE_ELEMENT_ARRAYSSOAP_USE_XSI_ARRAY_TYPESOAP_WAIT_ONE_WAY_CALLS のビットマスクです。

keep_alive オプションは boolean 値で、 Connection: Keep-Alive ヘッダーと Connection: close ヘッダーのどちらを送信するかを決めます。

エラー / 例外

SoapClient::SoapClient() は、 非 WSDL モードで locationuri オプションを指定しなかったときに E_ERROR エラーとなります。

wsdl URI が読み込めなかった場合に SoapFault をスローします。

変更履歴

バージョン 説明
5.4.0 keep_alive オプションが追加されました。

例1 SoapClient::SoapClient() の例

<?php

$client 
= new SoapClient("some.wsdl");

$client = new SoapClient("some.wsdl", array('soap_version'   => SOAP_1_2));

$client = new SoapClient("some.wsdl", array('login'          => "some_name",
                                            
'password'       => "some_password"));

$client = new SoapClient("some.wsdl", array('proxy_host'     => "localhost",
                                            
'proxy_port'     => 8080));

$client = new SoapClient("some.wsdl", array('proxy_host'     => "localhost",
                                            
'proxy_port'     => 8080,
                                            
'proxy_login'    => "some_name",
                                            
'proxy_password' => "some_password"));

$client = new SoapClient("some.wsdl", array('local_cert'     => "cert_key.pem"));

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     
'uri'      => "http://test-uri/"));

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     
'uri'      => "http://test-uri/",
                                     
'style'    => SOAP_DOCUMENT,
                                     
'use'      => SOAP_LITERAL));

$client = new SoapClient("some.wsdl"
  array(
'compression' => SOAP_COMPRESSION_ACCEPT SOAP_COMPRESSION_GZIP));

$server = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));

class 
MyBook {
    public 
$title;
    public 
$author;
}

$server = new SoapClient("books.wsdl", array('classmap' => array('book' => "MyBook")));

?>


SoapClient
PHP Manual