| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.soap.client">
- <title>Zend_Soap_Client</title>
- <para>
- <classname>Zend_Soap_Client</classname> est une classe destinée à simplifier
- l'interrogation de services <acronym>SOAP</acronym>.
- </para>
- <para>Cette classe peut être utilisée en mode WSDL ou non WSDL.</para>
- <para>
- Lorsque Zend_Soap_Client fonctionne en mode WSDL, il utilise le document WSDL pour
- définir les options de la couche de transport des données.
- </para>
- <para>
- Le fichier WSDL est en général fournit par le service auquel vous souhaitez accéder.
- Si la description WSDL n'est pas disponible, vous pouvez vouloir utiliser
- <classname>Zend_Soap_Client</classname> en mode non WSDL . Dans ce cas, toutes les options
- du protocole devront être définies explicitement dans la classe
- <classname>Zend_Soap_Client</classname>.
- </para>
- <sect2 id="zend.soap.client.constructor">
- <title>Constructeur de <classname>Zend_Soap_Client</classname></title>
- <para>
- Le constructeur de <classname>Zend_Soap_Client</classname> accepte 2 paramètres:
- <itemizedlist>
- <listitem>
- <para><varname>$wsdl</varname> : l'URI du fichier WSDL.</para>
- </listitem>
- <listitem>
- <para><varname>$options</varname> : options de création.</para>
- </listitem>
- </itemizedlist> Ces deux paramètres peuvent être insérés après construction, ceci
- grâce aux méthodes <methodname>setWsdl($wsdl)</methodname> et
- <methodname>setOptions($options)</methodname>.
- </para>
- <note>
- <title>Important!</title>
- <para>
- Si vous utilisez Zend_Soap_Client en mode non WSDL, vous
- <emphasis>devez</emphasis> fournir les options 'location' et 'uri'.
- </para>
- </note>
- <para>
- Les options suivantes sont reconnues: <itemizedlist>
- <listitem>
- <para>
- 'soap_version' ('soapVersion') : version du protocole <acronym>SOAP</acronym> à utiliser
- (SOAP_1_1 ou <acronym>SOAP</acronym>_1_2).
- </para>
- </listitem>
- <listitem>
- <para>
- 'classmap' ('classMap') : doit être utilisé pour faire correspondre
- des types WSDL à des classes <acronym>PHP</acronym>.
- </para>
- <para>
- Cette option doit être un tableau avec comme clés les types WSDL et
- comme valeurs les noms des classes <acronym>PHP</acronym>.
- </para>
- </listitem>
- <listitem>
- <para>
- 'encoding' : encodage interne des caractères (l'encodage externe est
- toujours UTF-8).
- </para>
- </listitem>
- <listitem>
- <para>
- 'wsdl' : qui est équivalent à un appel à
- <methodname>setWsdl($wsdlValue)</methodname>.
- </para>
- <para>
- Changer cette option peut faire basculer Zend_Soap_Client en mode WSDL
- ou non WSDL.
- </para>
- </listitem>
- <listitem>
- <para>
- 'uri' : cible du service <acronym>SOAP</acronym> (requis pour le mode non WSDL, inusité
- en mode WSDL).
- </para>
- </listitem>
- <listitem>
- <para>
- 'location' : l'URL à requêter (requis pour le mode non WSDL, inusité
- en mode WSDL).
- </para>
- </listitem>
- <listitem>
- <para>
- 'style' : style de requête (inusité en mode WSDL):
- <constant>SOAP_RPC</constant> ou <constant>SOAP_DOCUMENT</constant>.
- </para>
- </listitem>
- <listitem>
- <para>
- 'use' : méthode d'encodage des messages (inusité en mode WSDL):
- <constant>SOAP_ENCODED</constant> ou <constant>SOAP_LITERAL</constant>.
- </para>
- </listitem>
- <listitem>
- <para>
- 'login' et 'password' : login et password pour l'authentification
- <acronym>HTTP</acronym>.
- </para>
- </listitem>
- <listitem>
- <para>
- 'proxy_host', 'proxy_port', 'proxy_login', et 'proxy_password' :
- utilisés pour une connexion <acronym>HTTP</acronym> via un proxy.
- </para>
- </listitem>
- <listitem>
- <para>
- 'local_cert' et 'passphrase' : options d'authentification
- <acronym>HTTPS</acronym>.
- </para>
- </listitem>
- <listitem>
- <para>
- 'compression' : options de compression ; c'est une combinaison entre
- <constant>SOAP_COMPRESSION_ACCEPT</constant>, <constant>SOAP_COMPRESSION_GZIP</constant> et
- <constant>SOAP_COMPRESSION_DEFLATE</constant>, qui peuvent être utilisées de cette
- manière : <programlisting language="php"><![CDATA[
- // Accepte une response compressée
- $client = new Zend_Soap_Client("some.wsdl",
- array('compression' => SOAP_COMPRESSION_ACCEPT));
- ...
- // Compresse les requêtes avec gzip et un taux de 5
- $client = new Zend_Soap_Client("some.wsdl",
- array('compression' =>
- SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5));
- ...
- // Compresse les requêtes en utilisant deflate
- $client = new Zend_Soap_Client("some.wsdl",
- array('compression' =>
- SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE));
- ]]></programlisting></para>
- </listitem>
- </itemizedlist>
- </para>
- </sect2>
- <sect2 id="zend.soap.client.calls">
- <title>Effectuer des requêtes SOAP</title>
- <para>
- Lorsqu'un objet <classname>Zend_Soap_Client</classname> est crée, nous sommes
- prêts à créer des requêtes <acronym>SOAP</acronym>.
- </para>
- <para>
- Chaque méthode du service Web est liée à une méthode virtuelle de l'objet
- <classname>Zend_Soap_Client</classname>, qui s'utilise de manière tout à fait classique
- comme <acronym>PHP</acronym> le définit.
- </para>
- <para>
- Voici un exemple : <programlisting language="php"><![CDATA[
- ...
- //****************************************************************
- // Code du serveur
- //****************************************************************
- // class MyClass {
- // /**
- // * Cette méthode utilise ...
- // *
- // * @param integer $inputParam
- // * @return string
- // */
- // public function method1($inputParam) {
- // ...
- // }
- //
- // /**
- // * Cette méthode utilise ...
- // *
- // * @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();
- //
- //****************************************************************
- // Fin du code du serveur
- //****************************************************************
- $client = new Zend_Soap_Client("MyService.wsdl");
- ...
- // $result1 est une chaine
- $result1 = $client->method1(10);
- ...
- // $result2 est un flottant
- $result2 = $client->method2(22, 'some string');
- ]]></programlisting></para>
- </sect2>
- </sect1>
|