IntroductionZend_Http_Client fournit une interface qui permet d'utiliser le protocole HTTP (Hyper-Text
Transfer Protocol). Zend_Http_Client supporte les fonctionnalités de base d'un client HTTP, ainsi que
des fonctionnalités plus avancées, comme l'authentification ou l'upload de fichiers. Toutes les requêtes retournent
un objet Zend_Http_Response, avec lequel on pourra accéder au corps ou aux en-têtes de la réponse HTTP (voyez ).Utilisation de Zend_Http_ClientLe constructeur de classe accepte deux paramètres : l'URI (ou un objet
Zend_Uri_Http), et un tableau de configuration. Ils peuvent aussi être définis avec
des méthodes plus tard : setUri() et setConfig(). Instanciation d'un objet Zend_Http_Client 0,
'timeout' => 30));
// OU
$client = new Zend_Http_Client();
$client->setUri('http://example.org');
$client->setConfig(array(
'maxredirects' => 0,
'timeout' => 30));
]]>Zend_Http_Client utilise Zend_Uri_Http pour valider les URLs. Ce qui veut
dire que certains caractères comme les pipes ("|") ou le symbole "^" ne seront pas acceptés par défaut dans
les URLs. Ceci peut être modifié par le réglage de l'option "allow_unwise" de Zend_Uri à
true. Voir pour de plus amples
informations.Les paramètres de configurationLe constructeur et setConfig() acceptent un tableau associatif de paramètre de configuration.
Fixer ces paramètres est optionnel, ils ont tous une valeur par défaut.
Zend_Http_Client : paramètres de configurationParamètreDescriptionValeur attendueValeur par défautmaxredirectsNombre maximum de redirections à suivre (0 = aucune)entier5strictValidation faite ou non sur les noms d'en-têtes. Si à false, des
fonctions de validation n'interviendront pas. Habituellement ceci ne devrait pas être
changébooléentruestrictredirectsEst ce que le client doit suivre strictement les redirections selon la RFC2616 ?
(voyez )booléenfalseuseragentLa chaîne User Agent du client (envoyée en en-tête de requête)chaîne'Zend_Http_Client'timeoutConnexion timeout (secondes)entier10httpversionVersion du protocole HTTP à utiliser ('1.1', '1.0' ou '0.9')chaîne'1.1'adapterClasse adaptateur à utiliser (voyez )mixed'Zend_Http_Client_Adapter_Socket'keepaliveUtilisation du pipelining HTTP (connexion ouverte après déconnexion du
client)booléenfalsestoreresponseStockage ou non de la dernière réponse pour une récupération ultérieure avec
getLastResponse(). Si réglez à false,
getLastResponse() retournera null.booléentrue
Utilisation basiqueExécuter des requêtes HTTP basiques est très simple grâce à la méthode request(), et ceci
nécessite rarement plus d'une ligne de code : Requête GET simplerequest();
]]> La méthode request() accepte un paramètre optionnel définissant la méthode HTTP, -
GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS ou CONNECT - comme définies dans la RFC 2616 concernant le
protocole HTTP Voyez la RFC 2616 - .. Ces méthodes HTTP sont aussi définies en tant que constantes de classe, Zend_Http_Request::GET,
Zend_Http_Request::POST, etc...Si aucune méthode de requêtage HTTP n'est définie, alors la dernière utilisée via setMethod()
sera utilisée. Si setMethod() n'a jamais été appelée, GET est alors utilisée par défaut. Requêtes d'autres types que GETrequest('POST');
// autre manière de faire :
$client->setMethod(Zend_Http_Client::POST);
$response = $client->request();
]]>Ajouts de paramètres GET et POSTAjouter des paramètres GET à la requête HTTP est très simple. Vous pouvez les ajouter en tant que partie
de l'URL désirée, ou en utilisant la méthode setParameterGet(). Celle-ci prend en premier paramètre
le nom du paramètre GET, et en second sa valeur. Un tableau associatif peut aussi être utilisé. Ajouts de paramètres GETsetParameterGet('knight', 'lancelot');
// Ce qui est équivalent à :
$client->setUri('http://example.com/index.php?knight=lancelot');
// Ajout de plusieurs paramètres en un appel
$client->setParameterGet(array(
'first_name' => 'Bender',
'middle_name' => 'Bending'
'made_in' => 'Mexico',
));
]]>Coté POST, c'est très similaire à GET, sauf que les paramètres POST doivent faire partie du corps de la
requête. Il n'est donc pas possible de les ajouter dans l'URL. Utilisez simplement
setParameterPost() de la même manière que sa soeur setParameterGet(). Ajout de paramètres POSTsetParameterPost('language', 'fr');
// Plusieurs paramètres, dont un avec plusieurs valeurs
$client->setParameterPost(array(
'language' => 'es',
'country' => 'ar',
'selection' => array(45, 32, 80)
));
]]> Notez qu'en plus de paramètres POST, vous pouvez ajouter des paramètres GET à une requête POST.
Le contraire n'est pas possible, ainsi les paramètres POST ajoutés à une requête GET seront acceptés certes,
mais ignorés.Accéder à la dernière requête, ou réponseZend_Http_Client fournit un moyen d'accéder à la dernière requête qu'il a effectuée, ainsi
qu'à la dernière réponse qu'il a reçue. Zend_Http_Client->getLastRequest() ne prends pas de
paramètres et retourne la dernière requête sous forme de chaîne de caractères.
Zend_Http_Client->getLastResponse() retourne elle la dernière réponse, mais sous forme d'objet
Zend_Http_Response.