Hoofdstuk 15. Zend_Http

Inhoudsopgave

15.1. Zend_Http_Client
15.1.1. Inleiding
15.1.2. Basis GET verzoeken met gespecificeerde HTTP Headers
15.1.3. Multidomein verzoeken
15.1.4. De HTTP Timeout wijzigen
15.1.5. Dynamisch HTTP Headers zetten
15.1.6. POST, PUT en DELETE HTTP verzoeken maken
15.2. Zend_Http_Client - Advanced Usage
15.2.1. HTTP Redirections
15.2.2. Adding Cookies and Using Cookie Persistence
15.2.3. Setting Custom Request Headers
15.2.4. File Uploads
15.2.5. Sending Raw POST Data
15.2.6. HTTP Authentication
15.2.7. Sending Multiple Requests With the Same Client
15.3. Zend_Http_Client - Connection Adapters
15.3.1. Overview
15.3.2. The Socket Adapter
15.3.3. The Proxy Adapter
15.3.4. The Test Adapter
15.3.5. Creating your own connection adapters
15.4. Zend_Http_Cookie and Zend_Http_CookieJar
15.4.1. Inleiding
15.4.2. Instantiating Zend_Http_Cookie Objects
15.4.3. Zend_Http_Cookie getter methods
15.4.4. Zend_Http_Cookie: Matching against a scenario
15.4.5. The Zend_Http_CookieJar Class: Instantiation
15.4.6. Adding Cookies to a Zend_Http_CookieJar object
15.4.7. Retrieving Cookies From a Zend_Http_CookieJar object
15.5. Zend_Http_Response
15.5.1. Inleiding

15.1. Zend_Http_Client

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

15.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 15.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 15.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 15.1.3, “Multidomein verzoeken”

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

15.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.

15.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

15.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 15.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.