Hoofdstuk 6. Zend_Http

Inhoudsopgave

6.1. Zend_Http_Client
6.1.1. Inleiding
6.1.2. Basis GET verzoeken met gespecificeerde HTTP Headers
6.1.3. Multidomein verzoeken
6.1.4. De HTTP Timeout wijzigen
6.1.5. Dynamisch HTTP Headers zetten
6.1.6. POST, PUT en DELETE HTTP verzoeken maken
6.2. Zend_Http_Response
6.2.1. Inleiding

6.1. Zend_Http_Client

6.1.1. Inleiding

Zend_Http_Client verstrekt een eenvoudige interface om HTTP verzoeken te maken. Zend_Http_Client kan GET, POST, PUT en DELETE verzoeken maken.

[Opmerking] Opmerking
Zend_HttpClient volgt standaard tot 5 HTTP verwijzingen. Om dit gedrag te veranderen geef je het maximum toegestane verwijzingen aan de get() methode op.

Voorbeeld 6.1. Een basis GET verzoek maken

<?php
    require_once 'Zend/Http/Client.php';
    try {
        $http = new Zend_Http_Client('http://example.org');
        $response = $http->get();
        if ($response->isSuccessful()) {
            echo $response->getBody();
        } else {
            echo '<p>Er trad een fout op</p>';
        }
    } catch (Zend_Http_Client_Exception $e) {
        echo '<p>Er trad een fout op (' .$e->getMessage(). ')</p>';
    }
    ?>

6.1.2. Basis GET verzoeken met gespecificeerde HTTP Headers

De Zend_Http_Client constructor maakt een Zend_Http_Client instantie om HTTP verzoeken te zenden.

Als je Zend_Http_Client gebruikt op één enkele URL kan je in de meeste gevallen de URL en relevante headers aan de constructor geven, zoals in de volgende voorbeelden:

Voorbeeld 6.2. Een Basis Zend_Http_Client maken

<?php
    require_once 'Zend/Http/Client.php';

    // Specificeer de URL en een enkele header
    $http = new Zend_Http_Client('http://example.org', 'Accept: text/html');
    ?>       

Voorbeeld 6.3. Meerdere Headers sturen

<?php
    require_once 'Zend/Http/Client.php';

    // Specificeer de URL en meerdere headers
    $http = new Zend_Http_Client('http://example.org',
                            array('Accept: text/html', 'Accept-Language: en-us,en;q=0.5'));
    ?>       

Als je Zend_Http_Client wenst te gebruiken om verzoeken aan meerdere URLs te sturen, zie dan Paragraaf 6.1.3, “Multidomein verzoeken”

6.1.3. Multidomein verzoeken

Zend_Http_Client ondersteunt het sturen van verzoeken aan meerdere domeinen door het zetten van de URL via de methode Zend_Http_Client::setUri().

[Opmerking] Opmerking

Een geweldig gebruik hiervoor is als je meerdere RSS feeds uitleest.

Voorbeeld 6.4. Multidomein verzoek

<?php
    require_once 'Zend/Http/Client.php';

    // Het client object instantiëren
    $http = new Zend_Http_Client();

    // De URI naar Slashdot's hoofd feed zetten
    $http->setUri('http://rss.slashdot.org/Slashdot/slashdot');

    // De feed opvragen
    $slashdot = $http->get();

    // Nu de BBC news feed instellen
    $http->setUri('http://newsrss.bbc.co.uk/rss/newsonline_world_edition/technology/rss.xml');

    // de feed opvragen
    $bbc = $http->get();
    ?>   

6.1.4. De HTTP Timeout wijzigen

Zend_Http_Client::setTimeout() laat je toe de timeout voor de HTTP verbinding te zetten, in seconden.

[Opmerking] Opmerking

De standaard timeout is 10 seconden.

6.1.5. Dynamisch HTTP Headers zetten

Je kan een array headers zetten met Zend_Http_Client::setHeaders().

[Belangrijk] Belangrijk

Headers moeten het formaat volgen: Header: waarde

6.1.6. POST, PUT en DELETE HTTP verzoeken maken

Het maken van POST, PUT en DELETE HTTP verzoeken wordt vereenvoudigd in Zend_Http_Client door middel van drie methodes: post(), put(), en delete(), respectievelijk. De post() en put() methodes aanvaarden elk één string parameter, $data, waarin een string met de data correct ge-encodeerd zoals volgt: name=value&foo=bar. De delete() methode heeft geen parameters.

Voorbeeld 6.5. POST data verzenden met Zend_Http_Client

<?php
    require_once 'Zend/Http/Client.php';

    // Het client object instantiëren
    $http = new Zend_Http_Client();

    // De URI naar een POST dataverwerker zetten
    $http->setUri('http://example.org/post/processor');

    // De specifieke GET variabelen als HTTP POST data opslaan
    $postData = 'foo=' . urlencode($_GET['foo']) . '&bar=' . urlencode($_GET['bar']);

    // Het HTTP POST verzoek maken en het HTTP antwoord opslaan
    $httpResponse = $http->post($postData);
    ?>   

Een PUT verzoek maken is hetzelfde als in het voorgaande voorbeeld om een POST verzoek te maken; je hoeft slechts de put() methode gebruiken in plaats van de post() methode.