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
コンストラクタには引数が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
の組み合わせです。 下記のように使われるでしょう:// レスポンスの圧縮を受け付けます $client = new Zend_Soap_Client("some.wsdl", array('compression' => 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));
Zend_Soap_Client
オブジェクトを作成したら、SOAPリクエストを実行する準備ができます。
ウェブ・サービス・メソッドそれぞれで、
一般的なPHP型のパラメータを持つ仮想Zend_Soap_Client
オブジェクト・メソッドにマップされます。
それを下記の例のように使います:
//**************************************************************** // サーバのコード //**************************************************************** // class MyClass { // /** // * このメソッドは ... // * // * @param integer $inputParam // * @return string // */ // public function method1($inputParam) { // ... // } // // /** // * このメソッドは ... // * // * @param integer $inputParam1 // * @param string $inputParam2 // * @return float // */ // public function method2($inputParam1, $inputParam2) { // ... // } // // ... // } // ... // $server = new Zend_Soap_Server(null, $options); // $server->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');