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_ACCEPTSOAP_COMPRESSION_GZIPSOAP_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'); ]]>