Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Wiki
Pages
Dernière activité
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
Utiliser le client Zend de manière avancée
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Walky 🇫🇷" data-source="post: 6929841" data-attributes="member: 175291"><p style="text-align: center">[ATTACH=full]101520[/ATTACH]</p> <p style="text-align: center">Bonjour à tous [fa]fa-smile-o[/fa], aujourd'hui on se retrouve pour un <strong>nouveau tutoriel</strong> durant lequel je vais vous expliquer les différentes possibilités du client Zend Framework.</p> <p style="text-align: center"></p> <p style="text-align: center">Dans chaque bout, j'estimerai que le client <strong>Zend Framework</strong> est déjà inclut dans le fichier <strong>PHP [fa]fa-code[/fa]</strong></p> <p style="text-align: center">[ATTACH=full]101521[/ATTACH]</p><p>Commençons donc par <strong>l'initialisation [fa]fa-spinner fa-spin[/fa]</strong> du client Zend, pour ce faire, il existe 2 méthodes, à vous de choisir laquelle vous convient le <strong>mieux</strong> [fa]fa-smile-o[/fa]</p><p>[php]</p><p>// première méthode</p><p>$client = new Zend_Http_Client('https://reality-gaming.fr');</p><p></p><p>// seconde méthode</p><p>$client = new Zend_Http_Client();</p><p>$client->setUri('https://reality-gaming.fr');</p><p>[/php]</p><p>Ici, j'effectue la requête sur <strong>RealityGaming</strong>. A vous de modifier le lien.</p><p style="text-align: center">[ATTACH=full]101523[/ATTACH]</p><p>Lorsque vous envoyez une <strong>requête </strong>à un <strong>serveur [fa]fa-server[/fa]</strong>, Zend Framework va utiliser une <strong>configuration pré-définie</strong>, que vous pouvez bien évidemment modifier ! C'est ce que nous allons voir dans cette partie.</p><p>La <strong>configuration </strong>compte au total <strong>12 paramètres</strong>, que voici:</p><ul> <li data-xf-list-type="ul"><strong>maxredirects</strong> -> Nombre maximum de redirections à suivre. <strong>Par défaut</strong>: 5</li> <li data-xf-list-type="ul"><strong>strictredirects </strong>-> Si le client doit strictement suivre les <strong>RFC </strong>(Request For Comments) en redirigeant. <strong>Par défaut</strong>: false</li> <li data-xf-list-type="ul"><strong>useragent </strong>-> L'agent d'utilisateur envoyé dans les <strong>headers </strong>lors d'une requête. <strong>Par défaut</strong>: Zend_Http_Client</li> <li data-xf-list-type="ul"><strong>timeout </strong>-> Délai d'expiration de la <strong>connexion </strong>au <strong>serveur ciblé</strong> (donné en secondes). <strong>Par défaut</strong>: 10</li> <li data-xf-list-type="ul"><strong>adapter</strong> -> La class de <strong>l'adaptateur </strong>de connexion à utiliser. <strong>Par défaut</strong>: Zend_Http_Client_Adapter_Socket</li> <li data-xf-list-type="ul"><strong>httpversion </strong>-> La version du <strong>protocole HTTP</strong>. <strong>Par défaut</strong>: 1.1 (self::HTTP_1)</li> <li data-xf-list-type="ul"><strong>keepalive </strong>-> Si le <strong>client</strong> doit garder une connexion active avec le serveur ciblé. <strong>Par défaut</strong>: false</li> <li data-xf-list-type="ul"><strong>storeresponse </strong>-> Indique s'il faut stocker la <strong>dernière réponse</strong> du serveur pour pouvoir la récupérer plus tard.<strong> Par défaut</strong>: true</li> <li data-xf-list-type="ul"><strong>strict </strong>-> Indique s'il faut exécuter une <strong>validation </strong>sur le nom des <strong>headers</strong>. <strong>Par défaut</strong>: true</li> <li data-xf-list-type="ul"><strong>encodecookies </strong>-> Indique s'il faut passer les valeurs des cookies en utilisant les <strong>fonctions PHP [fa]fa-code[/fa]</strong> urldecode() / urlencode(). <strong>Par défaut</strong>: true</li> <li data-xf-list-type="ul"><strong>output_stream</strong> -> La <strong>destination</strong> de transmission des données reçues. <strong>Par défaut</strong>: false</li> <li data-xf-list-type="ul"><strong>rfc3986_strict </strong>-> Indique s'il faut adhérer au <strong>RFC 3986</strong> (remplacement des '+' par des '%20'). <strong>Par défaut</strong>: false</li> </ul><p>Maintenant que nous connaissons tous les <strong>paramètres [fa]fa-cogs[/fa]</strong>, nous pouvons modifier la configuration de base.</p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setConfig(array(</p><p> 'timeout' => 20, // 20 secondes</p><p> 'keepalive' => true, // on garde la connexion active</p><p> 'useragent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36',</p><p> // etc...</p><p>));</p><p>[/php]</p><p style="text-align: center">[ATTACH=full]101524[/ATTACH]</p><p>Grâce au <strong>client Zend</strong>, nous pouvons envoyer des <strong>headers </strong>à travers nos requêtes. Cette partie sera donc très courte et très simple [fa]fa-smile-o[/fa]</p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setHeaders(array(</p><p> 'Accept' => '*/*',</p><p> 'Content-Type' => 'application/x-www-form-urlencoded',</p><p> 'Referer' => 'https://reality-gaming.fr',</p><p> 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36',</p><p> // etc...</p><p>));</p><p>[/php]</p><p style="text-align: center">[ATTACH=full]101525[/ATTACH]</p><p>Vous pensez bien qu'avec le <strong>client</strong>, il est possible d'envoyer des <strong>paramètres [fa]fa-cogs[/fa]</strong> à travers votre <strong>requête</strong>. Nous allons donc voir comment procéder.</p><p><strong><u></u></strong></p><p><strong><u>Requête POST</u></strong></p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setParameterPost(array(</p><p> 'message' => 'Bonjour',</p><p> 'data' => '{"data":{"money":140,"level":12,"site":"RealityGaming"}}',</p><p> // etc...</p><p>));</p><p></p><p>$request = $client->request('POST'); // on envoi la requête POST avec les paramètres</p><p>$response = $request->getBody(); // on récupère le contenu de la réponse envoyée par le serveur ciblé</p><p>[/php]</p><p></p><p><strong><u>Requête GET</u></strong></p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setParameterGet(array(</p><p> 'message' => 'Bonjour',</p><p> 'data' => '{"data":{"money":140,"level":12,"site":"RealityGaming"}}',</p><p> // etc...</p><p>));</p><p></p><p>$request = $client->request('GET'); // on envoi la requête GET avec les paramètres</p><p>$response = $request->getBody(); // on récupère le contenu de la réponse envoyée par le serveur ciblé</p><p>[/php]</p><p><strong>[fa]fa-warning[/fa] Attention !</strong> Ces paramètres n'ont aucun effets sur <strong>RealityGaming</strong>, c'est seulement à titre d'exemple.</p><p style="text-align: center">[ATTACH=full]101527[/ATTACH]</p><p>Il se peut que le <strong>serveur [fa]fa-server[/fa] </strong>auquel vous voudriez accéder soit protégé par une <strong>authentification HTTP</strong>. Il faut quand même savoir que si vous ne connaissez pas les <strong>identifiants</strong>, il vous sera impossible d'envoyer une <strong>requête </strong>à ce serveur.</p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setAuth('username', 'password');</p><p>[/php]</p><p>C'est tout simple, et grâce à cette ligne, le <strong>client </strong>pourra accéder au serveur ! [fa]fa-smile-o[/fa]</p><p style="text-align: center">[ATTACH=full]101528[/ATTACH]</p><p>Et oui !<strong> Zend Framework</strong> permet d'envoyer également des <strong>cookies </strong>lors d'une requête ! Une nouvelle fois, c'est <strong>très court </strong>et super simple.</p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setCookie(array(</p><p> 'gold' => 58,</p><p> 'connected' => true,</p><p> 'message' => 'RealityGaming',</p><p> // etc...</p><p>));</p><p>[/php]</p><p>Une autre fonction permet de maintenir les <strong>valeurs des cookies</strong> à travers les différentes requêtes et réponses <strong>HTTP</strong>.</p><p>[php]</p><p>// le client est déjà initialisé</p><p>$client->setCookieJar();</p><p>[/php]</p><p style="text-align: center">[ATTACH=full]101529[/ATTACH]</p><p>Le client Zend vous permet d'envoyer des fichiers dans vos requêtes ! Nous allons donc voir, comment.</p><p>Premièrement, la fonction permettant d'envoyer des des fichiers est définie comme telle</p><p>[php]</p><p>public function setFileUpload($filename, $formname, $data = null, $ctype = null)</p><p>[/php]</p><p>Il y a donc <strong>4 paramètre</strong>s. Avant toute chose, il est nécessaire de savoir que si le <strong>3ème paramètre</strong> est défini comme <strong>NULL</strong>, la valeur du premier paramètre est supposée être un fichier sur le disque dur, donc le <strong>client Zend</strong> essayera de lire ce fichier et ainsi de l'envoyer. Sinon, la valeur du premier paramètre sera envoyée en tant que nom de fichier, cependant il n'est pas nécessaire que le fichier existe sur le <strong>disque dur [fa]fa-database[/fa]</strong>.</p><p></p><p>Démontrons tout ça en exemple.</p><p>[php]</p><p>// le client est déjà initialisé</p><p>// ici, on utilise ce que j'ai dis juste au-dessus</p><p>$texte = 'Du texte ... !';</p><p>$client->setFileUpload('fichier.txt', 'file', $texte, 'text/plain');</p><p></p><p>// fichier existant</p><p>$client->setFileUpload('fichier.xml', 'XMLFile');</p><p>[/php]</p><p></p><p>Le <strong>serveur [fa]fa-server[/fa] </strong>va donc récupérer cette information grâce à <strong>$_FILES['file'] </strong>(dans le premier exemple) et <strong>$_FILES['XMLFile']</strong> dans le second exemple.</p><p style="text-align: center">[ATTACH=full]101530[/ATTACH]</p><p>Zend Framework propose <strong>4 adaptateurs différents</strong> pour exécuter vos requêtes <strong>HTTP</strong>.</p><ul> <li data-xf-list-type="ul">Zend_Http_Client_Adapter_Socket <strong>(celui par défaut)</strong></li> <li data-xf-list-type="ul">Zend_Http_Client_Adapter_Proxy<br /> </li> <li data-xf-list-type="ul">Zend_Http_Client_Adapter_Curl<br /> </li> <li data-xf-list-type="ul">Zend_Http_Client_Adapter_Test</li> </ul><p>Chacun des ces adaptateurs comporte des <strong>options</strong> de configuration ! Tout au long de cette partie, je vous expliquerai les configurations des adaptateurs. [fa]fa-smile-o[/fa]</p><p></p><p><strong><u>Zend_Http_Client_Adapter_Socket</u></strong></p><p style="margin-left: 20px">Paramètres de configurations:</p> <ul style="margin-left: 20px"> <li data-xf-list-type="ul"><strong>persistent </strong>-> Indique s'il faut utiliser des connexions <strong>TCP </strong>persistantes. <strong>Par défaut:</strong> false</li> <li data-xf-list-type="ul"><strong>ssltransport </strong>-> La couche du transport de la <strong>connexion</strong>. <strong>Par défaut</strong>: ssl</li> <li data-xf-list-type="ul"><strong>sslcert </strong>-> Routage d'un certificat SSL encodé PEM. <strong>Par défaut</strong>: null</li> <li data-xf-list-type="ul"><strong>sslpassphrase </strong>-> Phrase de passe pour le fichier du certificat SSL. <strong>Par défaut</strong>: null</li> <li data-xf-list-type="ul"><strong>sslverifypeer </strong>-> Indique s'il faut vérifier le <strong>certificat SSL</strong>. <strong>Par défaut</strong>: true</li> <li data-xf-list-type="ul"><strong>sslcapath </strong>-> Chemin du <strong>dossier </strong>du certificat SSL. <strong>Par défaut</strong>: null</li> <li data-xf-list-type="ul"><strong>sslallowselfsigned </strong>-> Indique s'il faut accepter les certificats <strong>auto-signés</strong>. <strong>Par défaut</strong>: false<br /> </li> <li data-xf-list-type="ul"><strong>sslusecontext </strong>-> Active les<strong> connexions proxy</strong> pour utiliser SSL même si le proxy en lui-même ne l'autorise pas. <strong>Par défaut</strong>: false</li> </ul> <p style="margin-left: 20px">Un exemple</p> <p style="margin-left: 20px">[php]</p> <p style="margin-left: 20px">$client = new Zend_Http_Client();</p> <p style="margin-left: 20px">$client->setUri('https://reality-gaming.fr');</p> <p style="margin-left: 20px"></p> <p style="margin-left: 20px">$client->setConfig(array(</p> <p style="margin-left: 20px"> 'adapter' => 'Zend_Http_Client_Adapter_Socket',</p> <p style="margin-left: 20px"> 'sslusecontext' => true,</p> <p style="margin-left: 20px"> // etc...</p> <p style="margin-left: 20px">));</p> <p style="margin-left: 20px"></p> <p style="margin-left: 20px">// suite ...</p> <p style="margin-left: 20px">[/php]</p><p></p><p><u><strong>Zend_Http_Client_Adapter_Proxy</strong></u></p><p style="margin-left: 20px">Paramètres de configurations:</p> <ul style="margin-left: 20px"> <li data-xf-list-type="ul"><strong>proxy_host </strong>-> Adresse du serveur proxy</li> <li data-xf-list-type="ul"><strong>proxy_port </strong>-> Port du serveur proxy. <strong>Par défaut</strong>: 8080</li> <li data-xf-list-type="ul"><strong>proxy_user </strong>-> Nom d'utilisateur pour se <strong>connecter </strong>au proxy (si requis)</li> <li data-xf-list-type="ul"><strong>proxy_pass </strong>-> Mot de passe pour se <strong>connecter </strong>au proxy (si requis)</li> </ul> <p style="margin-left: 20px">Un exemple</p> <p style="margin-left: 20px">[php]</p> <p style="margin-left: 20px">$client = new Zend_Http_Client();</p> <p style="margin-left: 20px">$client->setUri('https://reality-gaming.fr');</p> <p style="margin-left: 20px"></p> <p style="margin-left: 20px">$client->setConfig(array(</p> <p style="margin-left: 20px"> 'adapter' => 'Zend_Http_Client_Adapter_Proxy',</p> <p style="margin-left: 20px"> 'proxy_host' => 'proxy.reality-gaming.fr',</p> <p style="margin-left: 20px"> 'proxy_port' => 845,</p> <p style="margin-left: 20px"> 'proxy_user' => 'Walky.RG',</p> <p style="margin-left: 20px"> 'proxy_pass' => 'SuperPassword'</p> <p style="margin-left: 20px">));</p> <p style="margin-left: 20px"></p> <p style="margin-left: 20px">// suite ...</p> <p style="margin-left: 20px">[/php]</p> <p style="margin-left: 20px"></p><p><strong><u>Zend_Http_Client_Adapter_Curl</u></strong></p><p style="margin-left: 20px">Cet <strong>adaptateur </strong>ne contient pas vraiment de <strong>paramètres de configurations</strong> liés à Zend étant donné que c'est <strong>cURL </strong>qui gère le tout. [fa]fa-smile-o[/fa]</p> <p style="margin-left: 20px">Nous allons donc directement passer à l'exemple.</p> <p style="margin-left: 20px">[php]</p> <p style="margin-left: 20px">$client = new Zend_Http_Client();</p> <p style="margin-left: 20px">$client->setUri('https://reality-gaming.fr');</p> <p style="margin-left: 20px"></p> <p style="margin-left: 20px">$client->setConfig(array(</p> <p style="margin-left: 20px"> 'adapter' => 'Zend_Http_Client_Adapter_Curl',</p> <p style="margin-left: 20px"> 'curloptions' => array(</p> <p style="margin-left: 20px"> CURLOPT_RETURNTRANSFER => true,</p> <p style="margin-left: 20px"> CURLOPT_FOLLOWLOCATION => true,</p> <p style="margin-left: 20px"> CURLOPT_VERBOSE => true</p> <p style="margin-left: 20px"> // etc ...</p> <p style="margin-left: 20px"> )</p> <p style="margin-left: 20px">));</p> <p style="margin-left: 20px"></p> <p style="margin-left: 20px">// suite ...</p> <p style="margin-left: 20px">[/php]</p> <p style="margin-left: 20px"></p><p>Je n'expliquerai pas le<strong> dernier adaptateur</strong>, car je n'en vois pas l'utilité et que beaucoup de choses peuvent déjà être faites avec les autres.</p><p style="text-align: center">[ATTACH=full]101531[/ATTACH]</p><p>Une fois votre <strong>requête envoyée</strong>, il vous est possible de récupérer plein <strong>d'informations</strong>. Les voici.</p><p>[php]</p><p>// client initialisé + requête envoyée</p><p>$client->getUri(); // récupère le lien où la requête a été envoyée</p><p>$client->getHeaders(); // récupère les headers de la réponse HTTP</p><p>$client->getRedirectionsCount(); // récupère le nombre de redirections que le client a effectué</p><p>$client->getCookieJar(); // récupère le cookie jar actuel</p><p>$client->getLastRequest(); // récupère la dernière requête HTTP, en tant que texte</p><p>$client->getLastResponse(); // récupère la dernière réponse HTTP reçue par le client</p><p>$client->getAdapter(); // récupère l'adaptateur utilisé</p><p>$client->getStream(); // récupère le statut de transmission pour les données reçues</p><p>$client->getBody(); // récupère le contenu de la réponse, en tant que texte</p><p>$client->getVersion(); // récupère la version HTTP de la réponse</p><p>$client->getStatus(); // récupère le statut du code de la réponse HTTP</p><p>$client->getMessage(); // récupère un message décrivant le code de la réponse HTTP</p><p>[/php]</p><p style="text-align: center">[ATTACH=full]101533[/ATTACH]</p><p>C'est donc la fin de ce tutoriel, n'hésitez pas à donner vos avis dessus dans les commentaires. [fa]fa-smile-o[/fa]</p><p></p><p><strong><em>Walky</em></strong></p></blockquote><p></p>
[QUOTE="Walky 🇫🇷, post: 6929841, member: 175291"] [CENTER][ATTACH=full]101520[/ATTACH] Bonjour à tous [fa]fa-smile-o[/fa], aujourd'hui on se retrouve pour un [B]nouveau tutoriel[/B] durant lequel je vais vous expliquer les différentes possibilités du client Zend Framework. Dans chaque bout, j'estimerai que le client [B]Zend Framework[/B] est déjà inclut dans le fichier [B]PHP [fa]fa-code[/fa][/B] [ATTACH=full]101521[/ATTACH][/CENTER] Commençons donc par [B]l'initialisation [fa]fa-spinner fa-spin[/fa][/B] du client Zend, pour ce faire, il existe 2 méthodes, à vous de choisir laquelle vous convient le [B]mieux[/B] [fa]fa-smile-o[/fa] [php] // première méthode $client = new Zend_Http_Client('https://reality-gaming.fr'); // seconde méthode $client = new Zend_Http_Client(); $client->setUri('https://reality-gaming.fr'); [/php] Ici, j'effectue la requête sur [B]RealityGaming[/B]. A vous de modifier le lien. [CENTER][ATTACH=full]101523[/ATTACH][/CENTER] Lorsque vous envoyez une [B]requête [/B]à un [B]serveur [fa]fa-server[/fa][/B], Zend Framework va utiliser une [B]configuration pré-définie[/B], que vous pouvez bien évidemment modifier ! C'est ce que nous allons voir dans cette partie. La [B]configuration [/B]compte au total [B]12 paramètres[/B], que voici: [LIST] [*][B]maxredirects[/B] -> Nombre maximum de redirections à suivre. [B]Par défaut[/B]: 5 [*][B]strictredirects [/B]-> Si le client doit strictement suivre les [B]RFC [/B](Request For Comments) en redirigeant. [B]Par défaut[/B]: false [*][B]useragent [/B]-> L'agent d'utilisateur envoyé dans les [B]headers [/B]lors d'une requête. [B]Par défaut[/B]: Zend_Http_Client [*][B]timeout [/B]-> Délai d'expiration de la [B]connexion [/B]au [B]serveur ciblé[/B] (donné en secondes). [B]Par défaut[/B]: 10 [*][B]adapter[/B] -> La class de [B]l'adaptateur [/B]de connexion à utiliser. [B]Par défaut[/B]: Zend_Http_Client_Adapter_Socket [*][B]httpversion [/B]-> La version du [B]protocole HTTP[/B]. [B]Par défaut[/B]: 1.1 (self::HTTP_1) [*][B]keepalive [/B]-> Si le [B]client[/B] doit garder une connexion active avec le serveur ciblé. [B]Par défaut[/B]: false [*][B]storeresponse [/B]-> Indique s'il faut stocker la [B]dernière réponse[/B] du serveur pour pouvoir la récupérer plus tard.[B] Par défaut[/B]: true [*][B]strict [/B]-> Indique s'il faut exécuter une [B]validation [/B]sur le nom des [B]headers[/B]. [B]Par défaut[/B]: true [*][B]encodecookies [/B]-> Indique s'il faut passer les valeurs des cookies en utilisant les [B]fonctions PHP [fa]fa-code[/fa][/B] urldecode() / urlencode(). [B]Par défaut[/B]: true [*][B]output_stream[/B] -> La [B]destination[/B] de transmission des données reçues. [B]Par défaut[/B]: false [*][B]rfc3986_strict [/B]-> Indique s'il faut adhérer au [B]RFC 3986[/B] (remplacement des '+' par des '%20'). [B]Par défaut[/B]: false [/LIST] Maintenant que nous connaissons tous les [B]paramètres [fa]fa-cogs[/fa][/B], nous pouvons modifier la configuration de base. [php] // le client est déjà initialisé $client->setConfig(array( 'timeout' => 20, // 20 secondes 'keepalive' => true, // on garde la connexion active 'useragent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36', // etc... )); [/php] [CENTER][ATTACH=full]101524[/ATTACH][/CENTER] Grâce au [B]client Zend[/B], nous pouvons envoyer des [B]headers [/B]à travers nos requêtes. Cette partie sera donc très courte et très simple [fa]fa-smile-o[/fa] [php] // le client est déjà initialisé $client->setHeaders(array( 'Accept' => '*/*', 'Content-Type' => 'application/x-www-form-urlencoded', 'Referer' => 'https://reality-gaming.fr', 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36', // etc... )); [/php] [CENTER][ATTACH=full]101525[/ATTACH][/CENTER] Vous pensez bien qu'avec le [B]client[/B], il est possible d'envoyer des [B]paramètres [fa]fa-cogs[/fa][/B] à travers votre [B]requête[/B]. Nous allons donc voir comment procéder. [B][U] Requête POST[/U][/B] [php] // le client est déjà initialisé $client->setParameterPost(array( 'message' => 'Bonjour', 'data' => '{"data":{"money":140,"level":12,"site":"RealityGaming"}}', // etc... )); $request = $client->request('POST'); // on envoi la requête POST avec les paramètres $response = $request->getBody(); // on récupère le contenu de la réponse envoyée par le serveur ciblé [/php] [B][U]Requête GET[/U][/B] [php] // le client est déjà initialisé $client->setParameterGet(array( 'message' => 'Bonjour', 'data' => '{"data":{"money":140,"level":12,"site":"RealityGaming"}}', // etc... )); $request = $client->request('GET'); // on envoi la requête GET avec les paramètres $response = $request->getBody(); // on récupère le contenu de la réponse envoyée par le serveur ciblé [/php] [B][fa]fa-warning[/fa] Attention ![/B] Ces paramètres n'ont aucun effets sur [B]RealityGaming[/B], c'est seulement à titre d'exemple. [CENTER][ATTACH=full]101527[/ATTACH][/CENTER] Il se peut que le [B]serveur [fa]fa-server[/fa] [/B]auquel vous voudriez accéder soit protégé par une [B]authentification HTTP[/B]. Il faut quand même savoir que si vous ne connaissez pas les [B]identifiants[/B], il vous sera impossible d'envoyer une [B]requête [/B]à ce serveur. [php] // le client est déjà initialisé $client->setAuth('username', 'password'); [/php] C'est tout simple, et grâce à cette ligne, le [B]client [/B]pourra accéder au serveur ! [fa]fa-smile-o[/fa] [CENTER][ATTACH=full]101528[/ATTACH][/CENTER] Et oui ![B] Zend Framework[/B] permet d'envoyer également des [B]cookies [/B]lors d'une requête ! Une nouvelle fois, c'est [B]très court [/B]et super simple. [php] // le client est déjà initialisé $client->setCookie(array( 'gold' => 58, 'connected' => true, 'message' => 'RealityGaming', // etc... )); [/php] Une autre fonction permet de maintenir les [B]valeurs des cookies[/B] à travers les différentes requêtes et réponses [B]HTTP[/B]. [php] // le client est déjà initialisé $client->setCookieJar(); [/php] [CENTER][ATTACH=full]101529[/ATTACH][/CENTER] Le client Zend vous permet d'envoyer des fichiers dans vos requêtes ! Nous allons donc voir, comment. Premièrement, la fonction permettant d'envoyer des des fichiers est définie comme telle [php] public function setFileUpload($filename, $formname, $data = null, $ctype = null) [/php] Il y a donc [B]4 paramètre[/B]s. Avant toute chose, il est nécessaire de savoir que si le [B]3ème paramètre[/B] est défini comme [B]NULL[/B], la valeur du premier paramètre est supposée être un fichier sur le disque dur, donc le [B]client Zend[/B] essayera de lire ce fichier et ainsi de l'envoyer. Sinon, la valeur du premier paramètre sera envoyée en tant que nom de fichier, cependant il n'est pas nécessaire que le fichier existe sur le [B]disque dur [fa]fa-database[/fa][/B]. Démontrons tout ça en exemple. [php] // le client est déjà initialisé // ici, on utilise ce que j'ai dis juste au-dessus $texte = 'Du texte ... !'; $client->setFileUpload('fichier.txt', 'file', $texte, 'text/plain'); // fichier existant $client->setFileUpload('fichier.xml', 'XMLFile'); [/php] Le [B]serveur [fa]fa-server[/fa] [/B]va donc récupérer cette information grâce à [B]$_FILES['file'] [/B](dans le premier exemple) et [B]$_FILES['XMLFile'][/B] dans le second exemple. [CENTER][ATTACH=full]101530[/ATTACH][/CENTER] Zend Framework propose [B]4 adaptateurs différents[/B] pour exécuter vos requêtes [B]HTTP[/B]. [LIST] [*]Zend_Http_Client_Adapter_Socket [B](celui par défaut)[/B] [*]Zend_Http_Client_Adapter_Proxy [*]Zend_Http_Client_Adapter_Curl [*]Zend_Http_Client_Adapter_Test [/LIST] Chacun des ces adaptateurs comporte des [B]options[/B] de configuration ! Tout au long de cette partie, je vous expliquerai les configurations des adaptateurs. [fa]fa-smile-o[/fa] [B][U]Zend_Http_Client_Adapter_Socket[/U][/B] [INDENT]Paramètres de configurations: [LIST] [*][B]persistent [/B]-> Indique s'il faut utiliser des connexions [B]TCP [/B]persistantes. [B]Par défaut:[/B] false [*][B]ssltransport [/B]-> La couche du transport de la [B]connexion[/B]. [B]Par défaut[/B]: ssl [*][B]sslcert [/B]-> Routage d'un certificat SSL encodé PEM. [B]Par défaut[/B]: null [*][B]sslpassphrase [/B]-> Phrase de passe pour le fichier du certificat SSL. [B]Par défaut[/B]: null [*][B]sslverifypeer [/B]-> Indique s'il faut vérifier le [B]certificat SSL[/B]. [B]Par défaut[/B]: true [*][B]sslcapath [/B]-> Chemin du [B]dossier [/B]du certificat SSL. [B]Par défaut[/B]: null [*][B]sslallowselfsigned [/B]-> Indique s'il faut accepter les certificats [B]auto-signés[/B]. [B]Par défaut[/B]: false [*][B]sslusecontext [/B]-> Active les[B] connexions proxy[/B] pour utiliser SSL même si le proxy en lui-même ne l'autorise pas. [B]Par défaut[/B]: false [/LIST] Un exemple [php] $client = new Zend_Http_Client(); $client->setUri('https://reality-gaming.fr'); $client->setConfig(array( 'adapter' => 'Zend_Http_Client_Adapter_Socket', 'sslusecontext' => true, // etc... )); // suite ... [/php][/INDENT] [U][B]Zend_Http_Client_Adapter_Proxy[/B][/U] [INDENT]Paramètres de configurations: [LIST] [*][B]proxy_host [/B]-> Adresse du serveur proxy [*][B]proxy_port [/B]-> Port du serveur proxy. [B]Par défaut[/B]: 8080 [*][B]proxy_user [/B]-> Nom d'utilisateur pour se [B]connecter [/B]au proxy (si requis) [*][B]proxy_pass [/B]-> Mot de passe pour se [B]connecter [/B]au proxy (si requis) [/LIST] Un exemple [php] $client = new Zend_Http_Client(); $client->setUri('https://reality-gaming.fr'); $client->setConfig(array( 'adapter' => 'Zend_Http_Client_Adapter_Proxy', 'proxy_host' => 'proxy.reality-gaming.fr', 'proxy_port' => 845, 'proxy_user' => 'Walky.RG', 'proxy_pass' => 'SuperPassword' )); // suite ... [/php] [/INDENT] [B][U]Zend_Http_Client_Adapter_Curl[/U][/B] [INDENT]Cet [B]adaptateur [/B]ne contient pas vraiment de [B]paramètres de configurations[/B] liés à Zend étant donné que c'est [B]cURL [/B]qui gère le tout. [fa]fa-smile-o[/fa] Nous allons donc directement passer à l'exemple. [php] $client = new Zend_Http_Client(); $client->setUri('https://reality-gaming.fr'); $client->setConfig(array( 'adapter' => 'Zend_Http_Client_Adapter_Curl', 'curloptions' => array( CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_VERBOSE => true // etc ... ) )); // suite ... [/php] [/INDENT] Je n'expliquerai pas le[B] dernier adaptateur[/B], car je n'en vois pas l'utilité et que beaucoup de choses peuvent déjà être faites avec les autres. [CENTER][ATTACH=full]101531[/ATTACH][/CENTER] Une fois votre [B]requête envoyée[/B], il vous est possible de récupérer plein [B]d'informations[/B]. Les voici. [php] // client initialisé + requête envoyée $client->getUri(); // récupère le lien où la requête a été envoyée $client->getHeaders(); // récupère les headers de la réponse HTTP $client->getRedirectionsCount(); // récupère le nombre de redirections que le client a effectué $client->getCookieJar(); // récupère le cookie jar actuel $client->getLastRequest(); // récupère la dernière requête HTTP, en tant que texte $client->getLastResponse(); // récupère la dernière réponse HTTP reçue par le client $client->getAdapter(); // récupère l'adaptateur utilisé $client->getStream(); // récupère le statut de transmission pour les données reçues $client->getBody(); // récupère le contenu de la réponse, en tant que texte $client->getVersion(); // récupère la version HTTP de la réponse $client->getStatus(); // récupère le statut du code de la réponse HTTP $client->getMessage(); // récupère un message décrivant le code de la réponse HTTP [/php] [CENTER][ATTACH=full]101533[/ATTACH][/CENTER] C'est donc la fin de ce tutoriel, n'hésitez pas à donner vos avis dessus dans les commentaires. [fa]fa-smile-o[/fa] [B][I]Walky[/I][/B] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
Utiliser le client Zend de manière avancée
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut