Kapitel 8. Zend_Http

Inhaltsverzeichnis

8.1. Zend_Http_Client
8.1.1. Einführung
8.1.2. Einfache GET Anfrage mit vorgegebenen HTTP Headern
8.1.3. Mehrere Domains anfragen
8.1.4. Ändern der HTTP Zeitüberschreitung
8.1.5. Dynamisches Setzen der HTTP Header
8.1.6. Durchführen von HTTP POST, PUT and DELETE Anfragen
8.2. Zend_Http_Response
8.2.1. Einführung

8.1. Zend_Http_Client

8.1.1. Einführung

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] 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>';
    }
    ?>

8.1.2. Einfache GET Anfrage mit vorgegebenen HTTP Headern

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“

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] 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();
    ?>   

8.1.4. Ändern der HTTP Zeitüberschreitung

Zend_Http_Client::setTimeout() erlaubt dir, die Zeitüberschreitung in Sekunden für eine HTTP Verbindung zu setzen.

[Anmerkung] Anmerkung

Der Standardwert für die Zeitüberschreitung ist 10 Sekunden.

8.1.5. Dynamisches Setzen der HTTP Header

Bei der Verwendung von Zend_Http_Client::setHeaders() kannst Du ein Array mit Header setzen.

[Wichtig] Wichtig

Headers müssen das Format beachten: Header: value

8.1.6. Durchführen von HTTP POST, PUT and DELETE Anfragen

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.