Inhaltsverzeichnis
Zend_Http_Client stellt ein einfaches Interface für die Ausführung von HTTP
Anfragen bereit. Zend_Http_Client kann GET, POST, PUT und DELETE Anfragen
ausführen.
![]() |
Anmerkung |
|---|---|
Zend_Http_Client verfolgt standardmäßig bis zu 5 HTTP Weiterleitungen. Um dieses
Verhalten zu ändern, übergebe die maximale Anzahl der erlaubten Weiterleitungen an die
get() Methode.
|
Beispiel 8.1. Eine einfache GET Anfrage durchführen
<?php
require_once 'Zend/HttpClient.php';
try {
$http = new Zend_Http_Client('http://example.org');
$response = $http->get();
if ($response->isSuccessful()) {
echo $response->getBody();
} else {
echo '<p>Ein Fehler ist aufgetreten.</p>';
}
} catch (Zend_Http_Client_Exception $e) {
echo '<p>Ein Fehler ist aufgetreten (' .$e->getMessage(). ')</p>';
}
?>
Der Konstruktur von Zend_Http_Client erstellt eine Zend_Http_Client
Instanz für das Senden von HTTP Anfragen.
Bei der Verwendung von Zend_Http_Client auf eine einzelne URL kannst Du in den
meisten Fällen die URL und die relevanten Header an den Konstruktor
wie in dem folgenden Beispiel übergeben:
Beispiel 8.2. Erstellen einer einfachen Zend_Http_Client Instanz
<?php
require_once 'Zend/HttpClient.php';
// Übergebe die URL und einen einzelnen Header
$http = new Zend_Http_Client('http://example.org', 'Accept: text/html');
?>
Beispiel 8.3. Senden von mehreren Headern
<?php
require_once 'Zend/HttpClient.php';
// Übergebe die URL und mehrere Header
$http = new Zend_Http_Client('http://example.org',
array('Accept: text/html', 'Accept-Language: en-us,en;q=0.5'));
?>
Wenn du Zend_Http_Client verwenden möchtest, um Anfragen an
mehrere URLs zu senden, siehe unter
Abschnitt 8.1.3, „Mehrere Domains anfragen“
Zend_Http_Client unterstützt das Senden von Anfragen an mehrere Domains
durch das Setzen der abzufragenden URLs mittels Zend_Http_Client::setUri().
![]() |
Anmerkung |
|---|---|
Dies ist eine große Hilfe beim Abfragen mehrerer RSS Feeds. |
Beispiel 8.4. Mehrere Domains anfragen
<?php
require_once 'Zend/HttpClient.php';
// Instanziiere unser Client Objekt
$http = new Zend_Http_Client();
// Setze die URI auf den Hauptfeed von Slashdot
$http->setUri('http://rss.slashdot.org/Slashdot/slashdot');
// Rufe den Feed ab
$slashdot = $http->get();
// Nun rufe den BBC Nachrichten Feed ab
$http->setUri('http://newsrss.bbc.co.uk/rss/newsonline_world_edition/technology/rss.xml');
// Rufe den Feed ab
$bbc = $http->get();
?>
Zend_Http_Client::setTimeout() erlaubt dir, die Zeitüberschreitung in Sekunden
für eine HTTP Verbindung zu setzen.
![]() |
Anmerkung |
|---|---|
Der Standardwert für die Zeitüberschreitung ist 10 Sekunden. |
Bei der Verwendung von Zend_Http_Client::setHeaders() kannst Du ein
Array mit Header setzen.
![]() |
Wichtig |
|---|---|
Headers müssen das Format beachten:
|
Das Durchführen von HTTP POST, PUT and DELETE Anfragen mit Zend_Http_Client wird
durch die Methoden post(), put() und delete()
entsprechend unterstützt. Die post() und put() Methoden benötigen
einen einzelnen String Parameter $data, in dem ein String mit den korrekt
codierten Daten enthalten sein soll, wie im folgenden:
name=value&foo=bar. Die delete() Methode
benötigt keine Parameter.
Beispiel 8.5. Senden von POST Daten mit Zend_Http_Client
<?php
require_once 'Zend/HttpClient.php';
// Instanziiere unser Client Objekt
$http = new Zend_Http_Client();
// Setze die URI auf einen Verarbeiter für POST Daten
$http->setUri('http://example.org/post/processor');
// Speichere die spezifischen GET Variablen als HTTP POST Daten
$postData = 'foo=' . urlencode($_GET['foo']) . '&bar=' . urlencode($_GET['bar']);
// Führe die HTTP POST Anfrage aus und speichere die HTTP Antwort
$httpResponse = $http->post($postData);
?>
Das Durchführen einer PUT Anfrage verläuft genauso wie in dem obigen Beispiel für die
Durchführung einer POST Anfrage; tausche nur die put() Methode mit der
post() Methode aus.