Zend_Soap_Client(日本語)
Zend_Soap_ClientによりPHPプログラマーにとってSOAPクライアントの開発が簡単になります。
WSDLモードまたは非WSDLモードで使用できるでしょう。
WSDLモードでは、Zend_Soap_Clientコンポーネントは
トランスポート層オプションを定めるためにWSDLドキュメントを使います。
WSDL記述は通常、クライアントがアクセスするウェブ・サービスによって提供されます。
WSDL記述が利用できるようにならなければ、非WSDLモードでZend_Soap_Clientを使いたいかもしれません。
すべてのSOAPプロトコル・オプションは、
このモードで明示的にZend_Soap_Clientクラス上に設定されなければなりません。
Zend_Soap_Clientコンストラクタ
Zend_Soap_Clientコンストラクタには引数が2つあります:
$wsdl - WSDLファイルのURI
$options - SOAPクライアントオブジェクトを作成するためのオプション
これらのパラメータは両方とも、
それぞれsetWsdl($wsdl)やsetOptions($options)メソッドで、
後から設定されるかもしれません。
重要
もし非WSDLモードでZend_Soap_Clientコンポーネントを使う場合、
'location' および 'uri' オプションを設定しなければなりません。
下記のオプションが許されています:
'soap_version' ('soapVersion') - 使用するSOAPバージョン (SOAP_1_1 または SOAP_1_2).
'classmap' ('classMap') -
一部の WSDL 型をPHPクラスにマップするために使います。
このオプションは、キーとしてWSDL型、値としてPHPクラス名をもつ配列でなければなりません。
'encoding' - 内部文字エンコーディング。 (対外的なエンコーディングとしてUTF-8が常に使われます)
'wsdl' setWsdl($wsdlValue)呼び出しと同じです。
このオプションを変更すると、
Zend_Soap_ClientオブジェクトをWSDLモードに、または、から切り替えるかもしれません。
'uri' - SOAPサービスのためのターゲットのネームスペース (非WSDLモードで必要です。WSDLモードでは動作しません)
'location' - 要求するURL (非WSDLモードで必要です。WSDLモードでは動作しません)
'style' - 要求形式 (WSDLモードでは動作しません): SOAP_RPC または SOAP_DOCUMENT
'use' - メッセージをエンコードするメソッド (WSDLモードでは動作しません): SOAP_ENCODED または
SOAP_LITERAL
'login' および 'password' - HTTP認証のための login および password
'proxy_host', 'proxy_port', 'proxy_login' および 'proxy_password' - プロキシ・サーバ経由のHTTP接続
'local_cert' および 'passphrase' - HTTPSクライアント証明書認証オプション。
'compression' - 圧縮オプション;
SOAP_COMPRESSION_ACCEPTやSOAP_COMPRESSION_GZIP、
SOAP_COMPRESSION_DEFLATEの組み合わせです。
下記のように使われるでしょう:
SOAP_COMPRESSION_ACCEPT));
...
// 圧縮レベル5でqzipを使ってリクエストを圧縮します
$client = new Zend_Soap_Client("some.wsdl",
array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5));
...
// deflate 圧縮を使ってリクエストを圧縮します
$client = new Zend_Soap_Client("some.wsdl",
array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE));
]]>
SOAPリクエストの実行
Zend_Soap_Clientオブジェクトを作成したら、SOAPリクエストを実行する準備ができます。
ウェブ・サービス・メソッドそれぞれで、
一般的なPHP型のパラメータを持つ仮想Zend_Soap_Clientオブジェクト・メソッドにマップされます。
それを下記の例のように使います:
setClass('MyClass');
// ...
// $server->handle();
//
//****************************************************************
// サーバのコード終了
//****************************************************************
$client = new Zend_Soap_Client("MyService.wsdl");
...
// $result1 は string です。
$result1 = $client->method1(10);
...
// $result2 は float です。
$result2 = $client->method2(22, 'some string');
]]>