16 octobre

La communication d'habitude sur l'Internet se compose d'une demande (demande) à un serveur Web via le protocole HTTP et une réponse (la réponse) à partir du serveur Web sur le même chemin. Le programme demande est appelé ainsi, les clients HTTP. Les plus connus sont clairement le navigateur. Mais même leurs propres programmes qui communiquent avec la volonté de tomber dans cette catégorie.
Maintenant que vous avez à réinventer la roue à nouveau. Donc, j'imagine que dans une petite série d'un couple de solutions d'abstraire les détails du protocole HTTP. La tâche est la même pour tout le monde:

  • Accéder à la page d'accueil de Google
  • Commencer une recherche
  • Affichage des résultats n'a pas laissé une description plus détaillée

Le premier est le paquet HTTP_Request2 de la poire référentiel. HTTP_Request2 prend uniquement en charge la communication HTTP pur, que vous aurez accès à l'en-tête avec ses métadonnées et le corps normalement envoyé au format HTML. La décomposition de l'HTML de (l'analyse) n'est pas inclus. Cette tâche est accomplie par SourceForge du projet PHP Simple analyseur DOM HTML .

Assez de mots, voici l'exemple de code:

  Une
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
  <Php
 ; require_once 'HTTP/Request2.php';
 ; require_once '/ includes / simple_html_dom.php ..';

 new simple_html_dom ( ) ; Html $ = new simple_html_dom ();

 'http://www.google.de' ; $ Url = 'http://www.google.de';
 new HTTP_Request2 ( $url , HTTP_Request2 :: METHOD_GET ) ; Demande $ = new HTTP_Request2 ($ url, HTTP_Request2 :: METHOD_GET);
 try {
     $request -> send ( ) ; $ $ = Réponse demande -> send ();
     200 == $response -> getStatus ( ) ) { if ($ response == 200 -> getStatus ()) {

       load_file ( $url ) ; $ Html - load_file> ($ url);
       $html -> find ( 'form' ) ; $ $ = Formulaires html -> find ('form');

       $forms [ 0 ] ; $ Form = $ formes [0];
       $form -> getAttribute ( 'action' ) ; $ Action = $ this - getAttribute> ('action');
       clear ( ) ; $ Html -> clear ();

       new HTTP_Request2 ( $url . $action , HTTP_Request2 :: METHOD_GET ) ; Demande $ = new HTTP_Request2 ($ url $ l'action, HTTP_Request2 :: METHOD_GET.);
       $request -> getUrl ( ) -> setQueryVariable ( 'q' , 'http client examples' ) ; $ Url = $ request -> getUrl () -> setQueryVariable ('q', des exemples client http ');

       load ( $request -> send ( ) -> getBody ( ) ) ; $ Html -> load ($ request -> send () -> getBody ());

       $html -> find ( 'a.l' ) as $link ) { foreach ($ html -> find ('a.l') as $ link) { 
          , "<br />" ; echo $ lien, "<br />";
       }

       clear ( ) ; $ Html -> clear ();
     { Else {}
         . $response -> getStatus ( ) . ' echo "inattendue d'état HTTP: '$ response -> getStatus ()' ..  '.
              getReasonPhrase ( ) ; Réponse $ - getReasonPhrase> ();
     }
 HTTP_Request2_Exception $e ) { Catch} (HTTP_Request2_Exception $ e) {
     . $e -> getMessage ( ) ; 'Erreur:' echo $ e -> getMessage ().
 }
 ?> 

Les lignes 7, 8 et 10 aller à la page d'accueil Google. Le succès de cette action (état HTTP 200) est contrôlé à la ligne 11. En supposant que la page existe, je vais me mettre dans la ligne 13, le code HTML et de regarder pour cela, après la première forme. Important pour les autres communications, l'action (attribut action) est défini pour cette forme.

L'URL d'action + + est la requête que dans la ligne 21 est ajouté en tant que paramètre à la demande a révélé la nouvelle demande. Simple HTML DOM analyseur, la classe peut briser non seulement le code HTML sa propre enquête, mais également utiliser une chaîne comme la source (ligne 23).
C'est ce qui m'excite le plus à propos de Simple HTML DOM analyseur, l'accès aux éléments HTML de la syntaxe des sélecteurs CSS. Ainsi, avec al l'accès à tous les liens vers la classe l.

Après que vous devriez toujours nettoyer un peu (ligne 29) - fait.

Conclusion:
L'équipe de HTTP_Request2 poires et PHP Simple HTML DOM Parser est un puissant client HTTP pour le langage de script PHP. La condition préalable est le seul environnement existant Poire Je recommanderais quand même, mais n'importe quel programmeur PHP.

Perspectives:
Partie 2 portera sur le Zend Framework. Articles avec des solutions pour Java et Groovy sont prévues. Quel client HTTP que vous utilisez pour vos tests fonctionnels, ou pour le contrôle à distance des applications Web?

gklinkmann écrit par \ \ tags: , , ,

5 Responses to "client HTTP (Partie 1) - Poire HTTP_Request2 + PHP HTML simple DOM Parser"

  1. Les clients HTTP (Partie 2) - + Zend_Http Zend_Dom »tout-IT Says:

    [...] HTTP Client (Partie 2) - + Commentaires Zend_Http Web Zend_Dom Faire Série: Partie 1 - Poire [...]

  2. Les clients HTTP (Partie 3) - HTTPUnit »Tout-IT Says:

    [...] Les clients (Partie 3) - Commentaires sur le Web HTTPUnit faire des séries: Partie 1 - Partie 2 poires - [...]

  3. Les clients HTTP (Partie 4) - la façon dont Groovy "IT-tout Says:

    [...] Les clients (Partie 4) - la manière Commentaires Web Groovy Faire Série: Partie 1 - Partie 2 poires - Partie Zend 3 - Partie Java 4 - [...]

  4. Maik Says:

    Merci d'abord pour le script!
    Fonctionne très bien jusqu'ici, mais je vais avoir des problèmes avec le transfert de plusieurs variables, vous m'aider?

    J'ai essayé le texte suivant:
    $ Url = $ request-> getUrl () -> setQueryVariable ('q', des exemples client http ');

    remplacé par:
    $ Params = array ("q" => "'httpclient exemples", "num" => "100");
    $ Url = $ request-> getUrl () -> setQueryVariables ($ params);

    J'ai donc essayé de Google pour obtenir des résultats, mais pas seulement 10 100 ...

    Pouvez-vous me dire ce que je fais mal ici?

  5. gklinkmann Says:

    Vous avez une apostrophe dans trop de «httpclient exemples". Avec des exemples des httpclient cela devrait fonctionner.

Ajouter un commentaire

Oui, je voudrais être notifié de commentaires!