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