Hoofdstuk 13. Zend_Http

Inhoudsopgave

13.1. Zend_Http_Client
13.1.1. Inleiding
13.1.2. Basis GET verzoeken met gespecificeerde HTTP Headers
13.1.3. Multidomein verzoeken
13.1.4. De HTTP Timeout wijzigen
13.1.5. Dynamisch HTTP Headers zetten
13.1.6. POST, PUT en DELETE HTTP verzoeken maken
13.2. Zend_Http_Client - Advanced Usage
13.2.1. HTTP Redirections
13.2.2. Adding Cookies and Using Cookie Persistence
13.2.3. Setting Custom Request Headers
13.2.4. File Uploads
13.2.5. Sending Raw POST Data
13.2.6. HTTP Authentication
13.2.7. Sending Multiple Requests With the Same Client
13.3. Zend_Http_Client - Connection Adapters
13.3.1. Overview
13.3.2. The Socket Adapter
13.3.3. The Proxy Adapter
13.3.4. The Test Adapter
13.3.5. Creating your own connection adapters
13.4. Zend_Http_Cookie and Zend_Http_CookieJar
13.4.1. Inleiding
13.4.2. Instantiating Zend_Http_Cookie Objects
13.4.3. Zend_Http_Cookie getter methods
13.4.4. Zend_Http_Cookie: Matching against a scenario
13.4.5. The Zend_Http_CookieJar Class: Instantiation
13.4.6. Adding Cookies to a Zend_Http_CookieJar object
13.4.7. Retrieving Cookies From a Zend_Http_CookieJar object
13.5. Zend_Http_Response
13.5.1. Inleiding

13.1. Zend_Http_Client

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

13.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 13.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 13.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 13.1.3, “Multidomein verzoeken”

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

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

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

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