Zend_Http_Client.xml 14 KB

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