Zend_Soap_Client.xml 8.3 KB

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