Zend_Soap_Client.xml 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.soap.client">
  5. <title>Zend_Soap_Client</title>
  6. <para>
  7. Die <classname>Zend_Soap_Client</classname> Klasse vereinfacht die Entwicklung von SOAP Clients für
  8. PHP Programmierern.
  9. </para>
  10. <para>
  11. Sie kann im WSDL oder im nicht-WSDL Modus verwendet werden.
  12. </para>
  13. <para>
  14. Im WSDL Modus verwendet die Zend_Soap_Client Komponente ein bereits vorbereitetes
  15. WSDL Dokument um die Optionen des Transport Layers zu definieren.
  16. </para>
  17. <para>
  18. Die WSDL Beschreibung wird normalerweise vom Web Service bereitgestellt auf das der Client zugreift.
  19. Wenn die WSDL Beschreibung nicht verfügbar gemacht wurde, kann man Zend_Soap_Client im nicht-WSDL
  20. Modus verwenden. In diesem Modus müssel alle SOAP Protokolloptionen explizit an der
  21. Zend_Soap_Client Klasse gesetzt werden.
  22. </para>
  23. <sect2 id="zend.soap.client.constructor">
  24. <title>Der Zend_Soap_Client Konstruktor</title>
  25. <para>
  26. Der <classname>Zend_Soap_Client</classname> Konstruktor nimmt zwei Parameter:
  27. <itemizedlist>
  28. <listitem>
  29. <para>
  30. <code>$wsdl</code> - eine URI einer WSDL Datei.
  31. </para>
  32. </listitem>
  33. <listitem>
  34. <para>
  35. <code>$options</code> - Optionen um ein SOAP Client Objekt zu erstellen.
  36. </para>
  37. </listitem>
  38. </itemizedlist>
  39. Beide Parameter können später gesetzt werden indem die <code>setWsdl($wsdl)</code> und
  40. <code>setOptions($options)</code> Methoden verwendet werden.
  41. </para>
  42. <note>
  43. <title>Wichtig!</title>
  44. <para>
  45. Wenn die Zend_Soap_Client Komponente im nicht-WSDL Modus verwendet wird,
  46. <emphasis>müssen</emphasis> die 'location' und 'uri' Optionen gesetzt werden.
  47. </para>
  48. </note>
  49. <para>
  50. Die folgenden Optionen werden erkannt:
  51. <itemizedlist>
  52. <listitem>
  53. <para>
  54. 'soap_version' ('soapVersion') - Die zu verwendende SOAP Version
  55. (SOAP_1_1 oder SOAP_1_2).
  56. </para>
  57. </listitem>
  58. <listitem>
  59. <para>
  60. 'classmap' ('classMap') welche verwendet werden kann um einige WSDL Typen auf PHP
  61. Klassen zu mappen.
  62. </para>
  63. <para>
  64. Die Option muß ein Array mit WSDL Typen als Schlüssel und Namen von PHP Klassen
  65. als Werte sein.
  66. </para>
  67. </listitem>
  68. <listitem>
  69. <para>
  70. 'encoding' - Interne Zeichen Kodierung (UTF-8 wird immer als externe Kodierung verwendet).
  71. </para>
  72. </listitem>
  73. <listitem>
  74. <para>
  75. 'wsdl' welcher dem Aufruf von <code>setWsdl($wsdlValue)</code> entspricht.
  76. </para>
  77. <para>
  78. Das Ändern dieser Option kann das Zend_Soap_Client Objekt von oder zum WSDL Modus
  79. wechseln.
  80. </para>
  81. </listitem>
  82. <listitem>
  83. <para>
  84. 'uri' - Der Ziel-Namespace für den SOAP Service (benötigt im nicht-WSDL Modus,
  85. funktioniert nicht im WSDL Modus).
  86. </para>
  87. </listitem>
  88. <listitem>
  89. <para>
  90. 'location' - Die URL der Anfrage (benötigt im nicht-WSDL Modus, funktioniert nicht
  91. im WSDL Modus).
  92. </para>
  93. </listitem>
  94. <listitem>
  95. <para>
  96. 'style' - Anfrage Stil (funktioniert nicht im WSDL Modus): <code>SOAP_RPC</code> oder
  97. <code>SOAP_DOCUMENT</code>.
  98. </para>
  99. </listitem>
  100. <listitem>
  101. <para>
  102. 'use' - Methode zum Verschlüsseln von Nachrichten (funktioniert nicht im WSDL
  103. Modus): <code>SOAP_ENCODED</code> oder <code>SOAP_LITERAL</code>.
  104. </para>
  105. </listitem>
  106. <listitem>
  107. <para>
  108. 'login' und 'password' - Login und Passwort für eine HTTP Authentifizierung.
  109. </para>
  110. </listitem>
  111. <listitem>
  112. <para>
  113. 'proxy_host', 'proxy_port', 'proxy_login', und 'proxy_password' - Eine HTTP
  114. Verbindung über einen Proxy Server.
  115. </para>
  116. </listitem>
  117. <listitem>
  118. <para>
  119. 'local_cert' und 'passphrase' - HTTPS Client Authentifizierungs Optionen für Zertifikate.
  120. </para>
  121. </listitem>
  122. <listitem>
  123. <para>
  124. 'compression' - Komprimierungs Optionen; das ist eine Kombination von
  125. <code>SOAP_COMPRESSION_ACCEPT</code>, <code>SOAP_COMPRESSION_GZIP</code> und
  126. <code>SOAP_COMPRESSION_DEFLATE</code> Optionen welche wie folgt verwendet werden
  127. können:
  128. <programlisting language="php"><![CDATA[
  129. // Komprimierung der Antworten akzeptieren
  130. $client = new Zend_Soap_Client("some.wsdl",
  131. array('compression' => SOAP_COMPRESSION_ACCEPT));
  132. ...
  133. // Anfragen komprimieren durch Verwendung von gzip mit Komprimierungs-Level 5
  134. $client = new Zend_Soap_Client("some.wsdl",
  135. array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5));
  136. ...
  137. // Anfragen komprimieren durch Verwendung der Deflate Komprimierung
  138. $client = new Zend_Soap_Client("some.wsdl",
  139. array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE));
  140. ]]></programlisting>
  141. </para>
  142. </listitem>
  143. </itemizedlist>
  144. </para>
  145. </sect2>
  146. <sect2 id="zend.soap.client.calls">
  147. <title>SOAP Anfragen durchführen</title>
  148. <para>
  149. Nachdem ein <classname>Zend_Soap_Client</classname> Objekt erstellt wurde sind wir bereit um
  150. SOAP Anfragen durchzuführen.
  151. </para>
  152. <para>
  153. Jede Methode des Web Services wird auf eine virtuelle <classname>Zend_Soap_Client</classname> Objekt-Methode
  154. gemappt welche Parameter mit üblichen PHP Typen entgegen nimmt.
  155. </para>
  156. <para>
  157. Es ist wie im folgenden Beispiel zu verwenden:
  158. <programlisting language="php"><![CDATA[
  159. //****************************************************************
  160. // Server Code
  161. //****************************************************************
  162. // class MyClass {
  163. // /**
  164. // * Diese Methode nimmt ...
  165. // *
  166. // * @param integer $inputParam
  167. // * @return string
  168. // */
  169. // public function method1($inputParam) {
  170. // ...
  171. // }
  172. //
  173. // /**
  174. // * Diese Methode nimmt ...
  175. // *
  176. // * @param integer $inputParam1
  177. // * @param string $inputParam2
  178. // * @return float
  179. // */
  180. // public function method2($inputParam1, $inputParam2) {
  181. // ...
  182. // }
  183. //
  184. // ...
  185. // }
  186. // ...
  187. // $server = new Zend_Soap_Server(null, $options);
  188. // $server->setClass('MyClass');
  189. // ...
  190. // $server->handle();
  191. //
  192. //****************************************************************
  193. // Ende des Server Codes
  194. //****************************************************************
  195. $client = new Zend_Soap_Client("MyService.wsdl");
  196. ...
  197. // $result1 ist ein String
  198. $result1 = $client->method1(10);
  199. ...
  200. // $result2 ist ein Float
  201. $result2 = $client->method2(22, 'irgendein String');
  202. ]]></programlisting>
  203. </para>
  204. </sect2>
  205. </sect1>