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