Inhoudsopgave
Zend_Http_Client
verstrekt een eenvoudige interface om HTTP verzoeken te maken.
Zend_Http_Client
kan GET, POST, PUT en DELETE verzoeken maken.
Opmerking | |
---|---|
|
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>'; } ?>
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”
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 | |
---|---|
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(); ?>
Zend_Http_Client::setTimeout()
laat je toe de timeout voor de HTTP verbinding
te zetten, in seconden.
Opmerking | |
---|---|
De standaard timeout is 10 seconden. |
Je kan een array headers zetten met Zend_Http_Client::setHeaders()
.
Belangrijk | |
---|---|
Headers moeten het formaat volgen:
|
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.