1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21829 -->
4 <sect1 id="zend.soap.client">
5 <title>Zend_Soap_Client</title>
8 <classname>Zend_Soap_Client</classname> est une classe destinée à simplifier
9 l'interrogation de services <acronym>SOAP</acronym>.
12 <para>Cette classe peut être utilisée en mode WSDL ou non WSDL.</para>
15 Lorsque Zend_Soap_Client fonctionne en mode WSDL, il utilise le document WSDL pour
16 définir les options de la couche de transport des données.
20 Le fichier WSDL est en général fournit par le service auquel vous souhaitez accéder.
21 Si la description WSDL n'est pas disponible, vous pouvez vouloir utiliser
22 <classname>Zend_Soap_Client</classname> en mode non WSDL . Dans ce cas, toutes les options
23 du protocole devront être définies explicitement dans la classe
24 <classname>Zend_Soap_Client</classname>.
27 <sect2 id="zend.soap.client.constructor">
28 <title>Constructeur de <classname>Zend_Soap_Client</classname></title>
31 Le constructeur de <classname>Zend_Soap_Client</classname> accepte 2 paramètres:
34 <para><varname>$wsdl</varname> : l'URI du fichier WSDL.</para>
38 <para><varname>$options</varname> : options de création.</para>
40 </itemizedlist> Ces deux paramètres peuvent être insérés après construction, ceci
41 grâce aux méthodes <methodname>setWsdl($wsdl)</methodname> et
42 <methodname>setOptions($options)</methodname>.
46 <title>Important!</title>
49 Si vous utilisez Zend_Soap_Client en mode non WSDL, vous
50 <emphasis>devez</emphasis> fournir les options 'location' et 'uri'.
55 Les options suivantes sont reconnues: <itemizedlist>
58 'soap_version' ('soapVersion') : version du protocole <acronym>SOAP</acronym> à utiliser
59 (SOAP_1_1 ou <acronym>SOAP</acronym>_1_2).
65 'classmap' ('classMap') : doit être utilisé pour faire correspondre
66 des types WSDL à des classes <acronym>PHP</acronym>.
70 Cette option doit être un tableau avec comme clés les types WSDL et
71 comme valeurs les noms des classes <acronym>PHP</acronym>.
77 'encoding' : encodage interne des caractères (l'encodage externe est
84 'wsdl' : qui est équivalent à un appel à
85 <methodname>setWsdl($wsdlValue)</methodname>.
89 Changer cette option peut faire basculer Zend_Soap_Client en mode WSDL
96 'uri' : cible du service <acronym>SOAP</acronym> (requis pour le mode non WSDL, inusité
103 'location' : l'URL à requêter (requis pour le mode non WSDL, inusité
110 'style' : style de requête (inusité en mode WSDL):
111 <constant>SOAP_RPC</constant> ou <constant>SOAP_DOCUMENT</constant>.
117 'use' : méthode d'encodage des messages (inusité en mode WSDL):
118 <constant>SOAP_ENCODED</constant> ou <constant>SOAP_LITERAL</constant>.
124 'login' et 'password' : login et password pour l'authentification
125 <acronym>HTTP</acronym>.
131 'proxy_host', 'proxy_port', 'proxy_login', et 'proxy_password' :
132 utilisés pour une connexion <acronym>HTTP</acronym> via un proxy.
138 'local_cert' et 'passphrase' : options d'authentification
139 <acronym>HTTPS</acronym>.
145 'compression' : options de compression ; c'est une combinaison entre
146 <constant>SOAP_COMPRESSION_ACCEPT</constant>, <constant>SOAP_COMPRESSION_GZIP</constant> et
147 <constant>SOAP_COMPRESSION_DEFLATE</constant>, qui peuvent être utilisées de cette
148 manière : <programlisting language="php"><![CDATA[
149 // Accepte une response compressée
150 $client = new Zend_Soap_Client("some.wsdl",
151 array('compression' => SOAP_COMPRESSION_ACCEPT));
153 // Compresse les requêtes avec gzip et un taux de 5
154 $client = new Zend_Soap_Client("some.wsdl",
155 array('compression' =>
156 SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5));
158 // Compresse les requêtes en utilisant deflate
159 $client = new Zend_Soap_Client("some.wsdl",
160 array('compression' =>
161 SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE));
162 ]]></programlisting></para>
168 <sect2 id="zend.soap.client.calls">
169 <title>Effectuer des requêtes SOAP</title>
172 Lorsqu'un objet <classname>Zend_Soap_Client</classname> est crée, nous sommes
173 prêts à créer des requêtes <acronym>SOAP</acronym>.
177 Chaque méthode du service Web est liée à une méthode virtuelle de l'objet
178 <classname>Zend_Soap_Client</classname>, qui s'utilise de manière tout à fait classique
179 comme <acronym>PHP</acronym> le définit.
183 Voici un exemple : <programlisting language="php"><![CDATA[
185 //****************************************************************
187 //****************************************************************
190 // * Cette méthode utilise ...
192 // * @param integer $inputParam
195 // public function method1($inputParam) {
200 // * Cette méthode utilise ...
202 // * @param integer $inputParam1
203 // * @param string $inputParam2
206 // public function method2($inputParam1, $inputParam2) {
213 // $server = new Zend_Soap_Server(null, $options);
214 // $server->setClass('MyClass');
216 // $server->handle();
218 //****************************************************************
219 // Fin du code du serveur
220 //****************************************************************
222 $client = new Zend_Soap_Client("MyService.wsdl");
224 // $result1 est une chaine
225 $result1 = $client->method1(10);
227 // $result2 est un flottant
228 $result2 = $client->method2(22, 'some string');
229 ]]></programlisting></para>