Zend_Http_Client.xml 15 KB

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