Zend_Soap_Server(日本語)

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)メソッドで、 後から設定されるかもしれません。

Note: 重要
もし非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の組み合わせです。 下記のように使われるでしょう:

    1. // レスポンスの圧縮を受け付けます
    2. $client = new Zend_Soap_Client("some.wsdl",
    3.   array('compression' => SOAP_COMPRESSION_ACCEPT));
    4. ...
    5.  
    6. // 圧縮レベル5でqzipを使ってリクエストを圧縮します
    7. $client = new Zend_Soap_Client("some.wsdl",
    8.   array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5));
    9. ...
    10.  
    11. // deflate 圧縮を使ってリクエストを圧縮します
    12. $client = new Zend_Soap_Client("some.wsdl",
    13.   array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE));

SOAPリクエストの実行

Zend_Soap_Clientオブジェクトを作成したら、SOAPリクエストを実行する準備ができます。

ウェブ・サービス・メソッドそれぞれで、 一般的なPHP型のパラメータを持つ仮想Zend_Soap_Clientオブジェクト・メソッドにマップされます。

それを下記の例のように使います:

  1. //****************************************************************
  2. //                サーバのコード
  3. //****************************************************************
  4. // class MyClass {
  5. //     /**
  6. //      * このメソッドは ...
  7. //      *
  8. //      * @param integer $inputParam
  9. //      * @return string
  10. //      */
  11. //     public function method1($inputParam) {
  12. //         ...
  13. //     }
  14. //
  15. //     /**
  16. //      * このメソッドは ...
  17. //      *
  18. //      * @param integer $inputParam1
  19. //      * @param string  $inputParam2
  20. //      * @return float
  21. //      */
  22. //     public function method2($inputParam1, $inputParam2) {
  23. //         ...
  24. //     }
  25. //
  26. //     ...
  27. // }
  28. // ...
  29. // $server = new Zend_Soap_Server(null, $options);
  30. // $server->setClass('MyClass');
  31. // ...
  32. // $server->handle();
  33. //
  34. //****************************************************************
  35. //                サーバのコード終了
  36. //****************************************************************
  37.  
  38. $client = new Zend_Soap_Client("MyService.wsdl");
  39. ...
  40.  
  41. // $result1 は string です。
  42. $result1 = $client->method1(10);
  43. ...
  44.  
  45. // $result2 は float です。
  46. $result2 = $client->method2(22, 'some string');

Zend_Soap_Server(日本語)