| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- <?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>
|