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()
.