Zend_Http_Client.xml 13 KB

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