Table des matières
Zend_Http_Client fournit une interface simple avec laquelle vous pourrez effectuer des requêtes HTTP.
Zend_Http_Client est capable d'effectuer des requêtes GET, POST, PUT et DELETE.
![]() |
Note |
|---|---|
Zend_Http_Client suit par défaut jusqu'à 5 redirections HTTP. Pour changer ce comportement, passez
le nombre maximum de redirections autorisées à la méthode get().
|
Exemple 6.1. Effectuer une requête GET de base
<?php
require_once 'Zend/HttpClient.php';
try {
$http = new Zend_Http_Client('http://exemple.org');
$reponse = $http->get();
if ($reponse->isSuccessful()) {
echo $reponse->getBody();
} else {
echo '<p>Une erreur a eu lieu</p>';
}
} catch (Zend_Http_Client_Exception $e) {
echo '<p>Un erreur a eu lieu (' .$e->getMessage(). ')</p>';
}
?>
Le constructeur Zend_Http_Client crée une instance de Zend_Http_Client permettant d'envoyer des requêtes HTTP.
Lorsque vous utilisez Zend_Http_Client sur une seule URL, dans la plupart des cas vous pouvez
passer l'URL et les en-têtes voulues au constructeur, comme dans les exemples suivants :
Exemple 6.2. Créer un objet Zend_Http_Client de base
<?php
require_once 'Zend/HttpClient.php';
// Définition de l'URL et de l'en-tête
$http = new Zend_Http_Client('http://exemple.org', 'Accept: text/html');
?>
Exemple 6.3. Envoyer plusieurs en-têtes
<?php
require_once 'Zend/HttpClient.php';
// Définition de l'URL et de plusieurs en-têtes
$http = new Zend_Http_Client('http://exemple.org',
array('Accept: text/html', 'Accept-Language: fr-fr,fr;q=0.5'));
?>
Si vous souhaitez utiliser Zend_Http_Client pour envoyer des requêtes à plusieurs URL,
voyez Section 6.1.3, « Envoyer une requête à plusieurs domaines »
Zend_Http_Client prend en charge l'envoi d'une requête à plusieurs domaines; pour cela, définissez l'URL où
envoyer la requête grâce à la méthode Zend_Http_Client::setUri().
![]() |
Note |
|---|---|
Ceci est très pratique pour envoyer une requête à plusieurs flux RSS. |
Exemple 6.4. Envoyer une requête à plusieurs domaines
<?php
require_once 'Zend/HttpClient.php';
// Création de l'objet client
$http = new Zend_Http_Client();
// Définition de l'URI comme étant celle du flux principal de Slashdot
$http->setUri('http://rss.slashdot.org/Slashdot/slashdot');
// Obtention du flux
$slashdot = $http->get();
// Définition du flux d'actualités de la BBC
$http->setUri('http://newsrss.bbc.co.uk/rss/newsonline_world_edition/technology/rss.xml');
// Obtention le flux
$bbc = $http->get();
?>
La méthode Zend_Http_Client::setTimeout() vous permet de définir le délai d'attente en secondes pour une connexion HTTP.
![]() |
Note |
|---|---|
Le délai d'attente par défaut est de 10 secondes. |
Pour définir dynamiquement les en-têtes HTTP, utilisez la méthode Zend_Http_Client::setHeaders() en lui passant un tableau d'en-têtes.
![]() |
Important |
|---|---|
Les en-têtes doivent être écrits au format : |
L'envoi de requêtes HTTP POST, PUT et DELETE est facilité par Zend_Http_Client au moyen de trois méthodes :
respectivement post(), put() et delete(). Les méthodes post() et put()
acceptent chacune un seul paramètre, $donnees;
ce paramètre doit contenir les données POST correctement encodées et au format suivant : nom=valeur&toto=barre.
La méthode delete() n'accepte aucun paramètre.
Exemple 6.5. Envoyer des données POST au moyen de Zend_Http_Client
<?php
require_once 'Zend/HttpClient.php';
// Instanciation de l'objet client
$http = new Zend_Http_Client();
// Définition de l'URI comme étant celle d'une application traitant des données
POST
$http->setUri('http://exemple.org/post/application');
// Enregistrement des variables GET spécifiques sous forme de données HTTP POST
$donneesPOST = 'toto=' . urlencode($_GET['toto']) . '&barre=' .
urlencode($_GET['barre']);
// Exécution de la requête HTTP POST et enregistrement de la réponse HTTP
$reponseHTTP = $http->post($donneesPOST);
?>
Pour effectuer une requête PUT, faites la même chose que dans l'exemple ci-dessus mais remplacez post() par put() .