Zend_Http_Client.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.http.client">
  5. <title>Einführung</title>
  6. <para>
  7. Zend_Http_Client stellt eine einfache Schnittstelle für das Durchführen von Hyper-Text
  8. Transfer Protocol (HTTP) Anfragen. Zend_Http_Client unterstützt die meisten einfachen
  9. Funktionen, die man von einem HTTP Client erwartet, sowie einige komplexere Funktionen,
  10. wie z.B. HTTP Authentifizierung und Dateiuploads. Erfolgreiche Anfragen (und die meisten
  11. nicht erfolgreichen ebenfalls) liefern ein Zend_Http_Response Objekt zurück, welches den
  12. Zugriff auf die Header und den Hauptteil der Antwort ermöglichen (siehe
  13. <xref linkend="zend.http.response" />).
  14. </para>
  15. <sect2 id="zend.http.client.usage">
  16. <title>Zend_Http_Client verwenden</title>
  17. <para>
  18. Der Klassenkonstruktor akzeptiert optional eine URL als seinen ersten Parameter (kann
  19. entweder ein String oder ein Zend_Uri_Http Objekt sein) und ein optionales Array mit
  20. Konfigurationsparametern. Beides kann ausgelassen und später durch Verwendung der
  21. setUri() and setConfig() Methoden gesetzt werden.
  22. <example id="zend.http.client.introduction.example-1">
  23. <title>Ein Zend_Http_Client Objekt instanzieren</title>
  24. <programlisting role="php"><![CDATA[
  25. $client = new Zend_Http_Client('http://example.org', array(
  26. 'maxredirects' => 0,
  27. 'timeout' => 30));
  28. // Dies macht genau das selbe:
  29. $client = new Zend_Http_Client();
  30. $client->setUri('http://example.org');
  31. $client->setConfig(array(
  32. 'maxredirects' => 0,
  33. 'timeout' => 30));
  34. ]]>
  35. </programlisting>
  36. </example>
  37. <note><para>
  38. Zend_Http_Client verwendet Zend_Uri_Http um URLs zu prüfen. Das bedeutet das einige spezielle
  39. Zeichen wie das Pipe-Symbol ('|') oder das Karet Symbol ('^') in der URL standardmäßig nicht
  40. akzeptiert werden.
  41. Das kann geändert werden indem die 'allow_unwise' Option von Zend_Uri auf 'true' gesetzt
  42. wird. Siehe <xref linkend="zend.uri.validation.allowunwise" /> für mehr Informationen.
  43. </para></note>
  44. </para>
  45. </sect2>
  46. <sect2 id="zend.http.client.configuration">
  47. <title>Konfigurationsparameter</title>
  48. <para>
  49. Der Konstruktor und die setConfig() Methode akzeptieren ein assoziatives Array mit
  50. Konfigurationsparametern. Das Setzen dieser Parameter ist optional, da alle einen
  51. Standardwert haben.
  52. <table id="zend.http.client.configuration.table">
  53. <title>Zend_Http_Client Konfigurationsparameter</title>
  54. <tgroup cols="4">
  55. <thead>
  56. <row>
  57. <entry>Parameter</entry>
  58. <entry>Beschreibung</entry>
  59. <entry>Erwartete Werte</entry>
  60. <entry>Standardwert</entry>
  61. </row>
  62. </thead>
  63. <tbody>
  64. <row>
  65. <entry>maxredirects</entry>
  66. <entry>Maximale Anzahl von zu folgenden Umleitungen (0 = keine)</entry>
  67. <entry>integer</entry>
  68. <entry>5</entry>
  69. </row>
  70. <row>
  71. <entry>strict</entry>
  72. <entry>Ob Prüfungen an Headernamen durchzuführen sind. Einige
  73. Prüf-Funktionen werden übersprungen wenn auf false gesetzt.
  74. Sollte normalerweise nicht geändert werden</entry>
  75. <entry>boolean</entry>
  76. <entry>true</entry>
  77. </row>
  78. <row>
  79. <entry>strictredirects</entry>
  80. <entry>Ob beim Umleiten genau dem RFC zu folgen ist (siehe
  81. <xref linkend="zend.http.client.redirections" />)</entry>
  82. <entry>boolean</entry>
  83. <entry>false</entry>
  84. </row>
  85. <row>
  86. <entry>useragent</entry>
  87. <entry>String zur Identifizierung des User Agents (gesendet in den
  88. Anfrageheadern)</entry>
  89. <entry>string</entry>
  90. <entry>'Zend_Http_Client'</entry>
  91. </row>
  92. <row>
  93. <entry>timeout</entry>
  94. <entry>Zeitüberschreitung für Verbindungen (Sekunden)</entry>
  95. <entry>integer</entry>
  96. <entry>10</entry>
  97. </row>
  98. <row>
  99. <entry>httpversion</entry>
  100. <entry>Version des HTTP Protokolls (normalerweise '1.1' oder '1.0')</entry>
  101. <entry>string</entry>
  102. <entry>'1.1'</entry>
  103. </row>
  104. <row>
  105. <entry>adapter</entry>
  106. <entry>Zu verwendene Adapterklasse für die Verbindung (siehe
  107. <xref linkend="zend.http.client.adapters" />)</entry>
  108. <entry>mixed</entry>
  109. <entry>'Zend_Http_Client_Adapter_Socket'</entry>
  110. </row>
  111. <row>
  112. <entry>keepalive</entry>
  113. <entry>Ob keep-alive Verbindungen mit dem Server aktiviert werden
  114. sollen. Nützlich und kann die Performance verbessern, wenn mehrere
  115. aufeinanderfolgend Anfragen an den selben Server ausgeführt werden.</entry>
  116. <entry>boolean</entry>
  117. <entry>false</entry>
  118. </row>
  119. <row>
  120. <entry>storeresponse</entry>
  121. <entry>Ob die letzte Antwort für einen späteren Aufruf von getLastResponse()
  122. gespeichert werden soll. Wird sie auf false gesetzt gibt
  123. getLastResponse() null zurück.</entry>
  124. <entry>boolean</entry>
  125. <entry>true</entry>
  126. </row>
  127. </tbody>
  128. </tgroup>
  129. </table>
  130. </para>
  131. </sect2>
  132. <sect2 id="zend.http.client.basic-requests">
  133. <title>Durchführen von einfachen HTTP Anfragen</title>
  134. <para>
  135. Das Durchführen von einfachen HTTP Anfragen kann sehr leicht durch Verwendung der
  136. request() Methode gemacht werden und benötigt selten mehr als drei Codezeilen:
  137. <example id="zend.http.client.basic-requests.example-1">
  138. <title>Durchführen einer einfache GET Anfrage</title>
  139. <programlisting role="php"><![CDATA[
  140. $client = new Zend_Http_Client('http://example.org');
  141. $response = $client->request();
  142. ]]>
  143. </programlisting>
  144. </example>
  145. Die request() Methode akzeptiert einen optionalen Parameter - die Anfragemethode.
  146. Diese kann GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS oder CONNECT sein, wie im HTTP
  147. Protokoll definiert.
  148. <footnote>
  149. <para>
  150. Siehe RFC 2616 - <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616.html" />.
  151. </para>
  152. </footnote>.
  153. Zur Erleichterung sind alle als Klassenkonstanten definiert:
  154. Zend_Http_Client::GET, Zend_Http_Client::POST und so weiter.
  155. </para>
  156. <para>
  157. Wenn keine Methode angegeben worden ist, wird die durch den letzten Aufruf von
  158. setMethod() gesetzte Methode verwendet. Wenn setMethod() vorher nicht aufgerufen worden
  159. ist, wird als Standardmethode GET verwendet (siehe obiges Beispiel).
  160. <example id="zend.http.client.basic-requests.example-2">
  161. <title>Andere Anfragemethoden als GET verwenden</title>
  162. <programlisting role="php"><![CDATA[
  163. // Durchführen einer POST Anfrage
  164. $response = $client->request('POST');
  165. // Ein weiterer Weg, eine POST Anfrage durchzuführen
  166. $client->setMethod(Zend_Http_Client::POST);
  167. $response = $client->request();
  168. ]]>
  169. </programlisting>
  170. </example>
  171. </para>
  172. </sect2>
  173. <sect2 id="zend.http.client.parameters">
  174. <title>Hinzufügen von GET und POST Parametern</title>
  175. <para>
  176. Das Hinzufügen von GET Parametern zu einer HTTP Anfrage ist recht einfach und kann
  177. entweder über die Angabe als Teil der URL oder durch Verwendung der setParameterGet()
  178. Methode erfolgen.
  179. Diese Methode benötigt den Namen des GET Parameter als seinen ersten Parameter und den
  180. Wert des GET Parameter als seinen zweiten Parameter. Zur Erleichterung akzeptiert die
  181. setParameterGet() Methode auch ein einzelnes assoziatives Array mit GET Parameter als
  182. Name => Wert Variablen, was beim setzen von mehreren GET Parametern komfortabler sein
  183. kann.
  184. <example id="zend.http.client.parameters.example-1">
  185. <title>Setzen von GET Parametern</title>
  186. <programlisting role="php"><![CDATA[
  187. // Setzen eines GET Parameter mit der setParameterGet Methode
  188. $client->setParameterGet('knight', 'lancelot');
  189. // Dies ist äquivalent durch Setzen der URL:
  190. $client->setUri('http://example.com/index.php?knight=lancelot');
  191. // Hinzufügen mehrerer Parameter durch einen Aufruf
  192. $client->setParameterGet(array(
  193. 'first_name' => 'Bender',
  194. 'middle_name' => 'Bending'
  195. 'made_in' => 'Mexico',
  196. ));
  197. ]]>
  198. </programlisting>
  199. </example>
  200. </para>
  201. <para>
  202. Während GET Parameter bei jeder Anfragemethode gesetzt werden können, können POST
  203. Parameter nur im Hauptteil von POST Anfragen versendet werden. Das Hinzufügen von POST
  204. Parameter zu einer Anfrage ist sehr ähnlich wie das Hinzufügen von GET Parametern and
  205. kann mit der setParameterPost() Methode gemacht werden, die vom Aufbau der
  206. setParameterGet() Methode ähnlich ist..
  207. <example id="zend.http.client.parameters.example-2">
  208. <title>Setzen von POST Parametern</title>
  209. <programlisting role="php"><![CDATA[
  210. // Setzen eines POST Parameters
  211. $client->setParameterPost('language', 'fr');
  212. // Hinzufügen von mehreren POST Parametern, eines davon mit mehreren Werten
  213. $client->setParameterPost(array(
  214. 'language' => 'es',
  215. 'country' => 'ar',
  216. 'selection' => array(45, 32, 80)
  217. ));
  218. ]]>
  219. </programlisting>
  220. </example>
  221. Beim Senden einer POST Anfrage ist zu beachten, dass man sowohl GET als auch POST
  222. Parameter setzen kann. Auf der anderen Seite wird durch das Setzen von POST Parametern
  223. für andere Anfragen als POST kein Fehler ausgeworfen. Solange eine Anfrage keine POST
  224. Anfrage ist, werden POST Parameter einfach ignoriert.
  225. </para>
  226. </sect2>
  227. <sect2 id="zend.http.client.accessing_last">
  228. <title>Zugriff auf die Letzte Anfrage und Antwort</title>
  229. <para>
  230. Zend_Http_Client bietet Methoden um Zugriff auf die letzte gesendete Anfrage und die
  231. letzte empfangene Antwort des Client Objekts zu bekommen.
  232. <classname>Zend_Http_Client->getLastRequest()</classname> hat keine Parameter und gibt die
  233. letzte HTTP Anfrage als String zurück die der Client gesendet hat. Auf die gleiche Art
  234. und Weise gibt <classname>Zend_Http_Client->getLastResponse()</classname> die letzte HTTP
  235. Antwort als <link linkend="zend.http.response">Zend_Http_Response</link> Objekt
  236. zurück die der Client empfangen hat.
  237. </para>
  238. </sect2>
  239. </sect1>