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.