Zend_Http_Client.xml 12 KB

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