Zend_Http_Client.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 13623 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.http.client">
  5. <title>Introduction</title>
  6. <para><classname>Zend_Http_Client</classname> fournit une interface qui permet d'utiliser le protocole HTTP (Hyper-Text
  7. Transfer Protocol). <classname>Zend_Http_Client</classname> supporte les fonctionnalités de base d'un client HTTP, ainsi que
  8. des fonctionnalités plus avancées, comme l'authentification ou l'upload de fichiers. Toutes les requêtes retournent
  9. un objet Zend_Http_Response, avec lequel on pourra accéder au corps ou aux en-têtes de la réponse HTTP (voyez <xref
  10. linkend="zend.http.response" />).</para>
  11. <sect2 id="zend.http.client.introduction">
  12. <title>Utilisation de Zend_Http_Client</title>
  13. <para>Le constructeur de classe accepte deux paramètres : l'URI (ou un objet
  14. <code><classname>Zend_Uri_Http</classname></code>), et un tableau de configuration. Ils peuvent aussi être définis avec
  15. des méthodes plus tard : <code>setUri()</code> et <code>setConfig()</code>. <example
  16. id="zend.http.client.introduction.example-1">
  17. <title>Instanciation d'un objet Zend_Http_Client</title>
  18. <programlisting role="php"><![CDATA[
  19. $client = new Zend_Http_Client('http://example.org', array(
  20. 'maxredirects' => 0,
  21. 'timeout' => 30));
  22. // OU
  23. $client = new Zend_Http_Client();
  24. $client->setUri('http://example.org');
  25. $client->setConfig(array(
  26. 'maxredirects' => 0,
  27. 'timeout' => 30));
  28. ]]></programlisting>
  29. </example></para>
  30. <note>
  31. <para><classname>Zend_Http_Client</classname> utilise <classname>Zend_Uri_Http</classname> pour valider les URLs. Ce qui veut
  32. dire que certains caractères comme les pipes ("|") ou le symbole "^" ne seront pas acceptés par défaut dans
  33. les URLs. Ceci peut être modifié par le réglage de l'option "allow_unwise" de <classname>Zend_Uri</classname> à
  34. <code>true</code>. Voir <xref linkend="zend.uri.validation.allowunwise" /> pour de plus amples
  35. informations.</para>
  36. </note>
  37. </sect2>
  38. <sect2 id="zend.http.client.configuration">
  39. <title>Les paramètres de configuration</title>
  40. <para>Le constructeur et <code>setConfig()</code> acceptent un tableau associatif de paramètre de configuration.
  41. Fixer ces paramètres est optionnel, ils ont tous une valeur par défaut. <table
  42. id="zend.http.client.configuration.table">
  43. <title>Zend_Http_Client : paramètres de configuration</title>
  44. <tgroup cols="4">
  45. <thead>
  46. <row>
  47. <entry>Paramètre</entry>
  48. <entry>Description</entry>
  49. <entry>Valeur attendue</entry>
  50. <entry>Valeur par défaut</entry>
  51. </row>
  52. </thead>
  53. <tbody>
  54. <row>
  55. <entry>maxredirects</entry>
  56. <entry>Nombre maximum de redirections à suivre (0 = aucune)</entry>
  57. <entry>entier</entry>
  58. <entry>5</entry>
  59. </row>
  60. <row>
  61. <entry>strict</entry>
  62. <entry>Validation faite ou non sur les noms d'en-têtes. Si à <code>false</code>, des
  63. fonctions de validation n'interviendront pas. Habituellement ceci ne devrait pas être
  64. changé</entry>
  65. <entry>booléen</entry>
  66. <entry><code>true</code></entry>
  67. </row>
  68. <row>
  69. <entry>strictredirects</entry>
  70. <entry>Est ce que le client doit suivre strictement les redirections selon la RFC2616 ?
  71. (voyez <xref linkend="zend.http.client.redirections" />)</entry>
  72. <entry>booléen</entry>
  73. <entry><code>false</code></entry>
  74. </row>
  75. <row>
  76. <entry>useragent</entry>
  77. <entry>La chaîne User Agent du client (envoyée en en-tête de requête)</entry>
  78. <entry>chaîne</entry>
  79. <entry>'Zend_Http_Client'</entry>
  80. </row>
  81. <row>
  82. <entry>timeout</entry>
  83. <entry>Connexion timeout (secondes)</entry>
  84. <entry>entier</entry>
  85. <entry>10</entry>
  86. </row>
  87. <row>
  88. <entry>httpversion</entry>
  89. <entry>Version du protocole HTTP à utiliser ('1.1', '1.0' ou '0.9')</entry>
  90. <entry>chaîne</entry>
  91. <entry>'1.1'</entry>
  92. </row>
  93. <row>
  94. <entry>adapter</entry>
  95. <entry>Classe adaptateur à utiliser (voyez <xref
  96. linkend="zend.http.client.adapters" />)</entry>
  97. <entry>mixed</entry>
  98. <entry>'Zend_Http_Client_Adapter_Socket'</entry>
  99. </row>
  100. <row>
  101. <entry>keepalive</entry>
  102. <entry>Utilisation du pipelining HTTP (connexion ouverte après déconnexion du
  103. client)</entry>
  104. <entry>booléen</entry>
  105. <entry><code>false</code></entry>
  106. </row>
  107. <row>
  108. <entry>storeresponse</entry>
  109. <entry>Stockage ou non de la dernière réponse pour une récupération ultérieure avec
  110. <code>getLastResponse()</code>. Si réglez à <code>false</code>,
  111. <code>getLastResponse()</code> retournera <code>null</code>.</entry>
  112. <entry>booléen</entry>
  113. <entry><code>true</code></entry>
  114. </row>
  115. </tbody>
  116. </tgroup>
  117. </table></para>
  118. </sect2>
  119. <sect2 id="zend.http.client.basic-requests">
  120. <title>Utilisation basique</title>
  121. <para>Exécuter des requêtes HTTP basiques est très simple grâce à la méthode <code>request()</code>, et ceci
  122. nécessite rarement plus d'une ligne de code : <example id="zend.http.client.basic-requests.example-1">
  123. <title>Requête GET simple</title>
  124. <programlisting role="php"><![CDATA[
  125. $client = new Zend_Http_Client('http://example.org');
  126. $response = $client->request();
  127. ]]></programlisting>
  128. </example> La méthode <code>request()</code> accepte un paramètre optionnel définissant la méthode HTTP, -
  129. GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS ou CONNECT - comme définies dans la RFC 2616 concernant le
  130. protocole HTTP <footnote>
  131. <para>Voyez la RFC 2616 - <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616.html"></ulink>.</para>
  132. </footnote>. Ces méthodes HTTP sont aussi définies en tant que constantes de classe, Zend_Http_Request::GET,
  133. Zend_Http_Request::POST, etc...</para>
  134. <para>Si aucune méthode de requêtage HTTP n'est définie, alors la dernière utilisée via <code>setMethod()</code>
  135. sera utilisée. Si <code>setMethod()</code> n'a jamais été appelée, GET est alors utilisée par défaut. <example
  136. id="zend.http.client.basic-requests.example-2">
  137. <title>Requêtes d'autres types que GET</title>
  138. <programlisting role="php"><![CDATA[
  139. // requête POST
  140. $response = $client->request('POST');
  141. // autre manière de faire :
  142. $client->setMethod(Zend_Http_Client::POST);
  143. $response = $client->request();
  144. ]]></programlisting>
  145. </example></para>
  146. </sect2>
  147. <sect2 id="zend.http.client.parameters">
  148. <title>Ajouts de paramètres GET et POST</title>
  149. <para>Ajouter des paramètres GET à la requête HTTP est très simple. Vous pouvez les ajouter en tant que partie
  150. de l'URL désirée, ou en utilisant la méthode <code>setParameterGet()</code>. Celle-ci prend en premier paramètre
  151. le nom du paramètre GET, et en second sa valeur. Un tableau associatif peut aussi être utilisé. <example
  152. id="zend.http.client.parameters.example-1">
  153. <title>Ajouts de paramètres GET</title>
  154. <programlisting role="php"><![CDATA[
  155. // Avec la méthode setParameterGet
  156. $client->setParameterGet('knight', 'lancelot');
  157. // Ce qui est équivalent à :
  158. $client->setUri('http://example.com/index.php?knight=lancelot');
  159. // Ajout de plusieurs paramètres en un appel
  160. $client->setParameterGet(array(
  161. 'first_name' => 'Bender',
  162. 'middle_name' => 'Bending'
  163. 'made_in' => 'Mexico',
  164. ));
  165. ]]></programlisting>
  166. </example></para>
  167. <para>Coté POST, c'est très similaire à GET, sauf que les paramètres POST doivent faire partie du corps de la
  168. requête. Il n'est donc pas possible de les ajouter dans l'URL. Utilisez simplement
  169. <code>setParameterPost()</code> de la même manière que sa soeur <code>setParameterGet()</code>. <example
  170. id="zend.http.client.parameters.example-2">
  171. <title>Ajout de paramètres POST</title>
  172. <programlisting role="php"><![CDATA[
  173. // passage de paramètre POST simple
  174. $client->setParameterPost('language', 'fr');
  175. // Plusieurs paramètres, dont un avec plusieurs valeurs
  176. $client->setParameterPost(array(
  177. 'language' => 'es',
  178. 'country' => 'ar',
  179. 'selection' => array(45, 32, 80)
  180. ));
  181. ]]></programlisting>
  182. </example> Notez qu'en plus de paramètres POST, vous pouvez ajouter des paramètres GET à une requête POST.
  183. Le contraire n'est pas possible, ainsi les paramètres POST ajoutés à une requête GET seront acceptés certes,
  184. mais ignorés.</para>
  185. </sect2>
  186. <sect2 id="zend.http.client.accessing_last">
  187. <title>Accéder à la dernière requête, ou réponse</title>
  188. <para><classname>Zend_Http_Client</classname> fournit un moyen d'accéder à la dernière requête qu'il a effectuée, ainsi
  189. qu'à la dernière réponse qu'il a reçue. <classname>Zend_Http_Client-&gt;getLastRequest()</classname> ne prends pas de
  190. paramètres et retourne la dernière requête sous forme de chaîne de caractères.
  191. <classname>Zend_Http_Client-&gt;getLastResponse()</classname> retourne elle la dernière réponse, mais sous forme d'objet
  192. <link linkend="zend.http.response">Zend_Http_Response</link>.</para>
  193. </sect2>
  194. </sect1>
  195. <!--
  196. vim:se ts=4 sw=4 et:
  197. -->