Kapitel 8. Zend_Http
Zurück |  | Weiter

## Kapitel 8. Zend_Http

## 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
`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
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
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
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.

Zurück |  | Weiter
7.2. Zend_Filter_Input | Zum Anfang | 8.2. Zend_Http_Response