19 de octubre

Mientras estaba en la primera parte de mi pequeña serie de clientes HTTP han empleado con pera, lo haré ahora en el segundo Una parte de mi atención en el Zend Framework dirigida.

Aquí, también, necesitan de 2 paquetes para completar la tarea (ver parte 1 ). El paquete Zend_Http es como el paquete de PEAR Http_Request2 de pura comunicación HTTP adecuado.
Con Zend_Dom puede desmontar el HTML recibido.

Una manera de resolver la tarea podría ser:

  A
 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
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
  <Php
 ; require_once 'Zend / HTTP / Client.php';
 ; require_once 'Zend / HTTP / response.php';
 ; require_once 'Zend / Dom / query.php';

 'http://www.google.de' ; $ Url = 'http://www.google.de';

 new Zend_Http_Client ( $url , array ( $ Cliente = new Zend_Http_Client ($ url, array (
     0 , 'Maxredirects' => 0,
     30 ) ) ; 'Tiempo de espera' => 30));

 try {
    $client -> request ( 'GET' ) ; $ Respuesta = $ client -> solicitud ('GET');

    200 == $response -> getStatus ( ) ) { if ($ respuesta == 200 -> getStatus ()) {

       new Zend_Dom_Query ( $response -> getBody ( ) ) ; $ Dom = new Zend_Dom_Query ($ respuesta -> GetBody ());
       $dom -> query ( 'form' ) ; Formas $ = $ dom -> query ('form');

       $forms -> current ( ) ; $ Form = $ formas -> current ();
       $form -> getAttribute ( 'action' ) ; $ Action = $ this - getAttribute> ('acción');

       new Zend_Http_Client ( $url . $action , array ( $ Cliente = new Zend_Http_Client ($ url. $ Acción, array (
           0 , 'Maxredirects' => 0,
           30 ) ) ; 'Tiempo de espera' => 30));
       setParameterGet ( 'q' , 'http client examples' ) ; $ Cliente -> setParameterGet ('q', 'ejemplos de clientes http');
       $client -> request ( 'GET' ) ; $ Respuesta = $ client -> solicitud ('GET');

       new Zend_Dom_Query ( $response -> getBody ( ) ) ; $ Dom = new Zend_Dom_Query ($ respuesta -> GetBody ());

       $dom -> query ( 'a.l' ) as $link ) { foreach ($ dom -> query ('A.L') as $ enlace) {
          $link -> hasAttribute ( 'href' ) ) { if ($ link - hasAttribute> ('href')) {
             $link -> getAttribute ( 'href' ) ; Href = $ $ enlace - getAttribute> ('href');
             $link -> textContent ; $ Enlace = $ enlace de texto - el contenido del texto>;

             $href \" > $linkText </a><br />" ; echo "<a href= \" $href \"> $ texto del enlace </ a> <br />";
          } 
       }

    { Else {}
         . $response -> getStatus ( ) . ' echo "inesperado de estado HTTP: '$ respuesta -> getStatus ()' ..  '.
              responseCodeAsText ( ) ; $ Respuesta -> responseCodeAsText ();
     }
 Zend_Http_Exception $e ) { Captura} (Zend_Http_Exception $ e) {
     . $e -> getMessage ( ) ; 'Error:' echo $ e -> getMessage ().
 }
 > 

El código habla por sí solo, así que no voy a explicar en este punto tanto detalle como en la primera parte.
La diferencia está en el análisis de HTML. El método query () (líneas 18 y 31) establece que no es una matriz, sino más bien un objeto de clase Zend_Dom_Query_Result espalda. Debido a esta clase, los dos de interfaz Countable y Iterator en práctica, los resultados de la investigación con un foreach . bucle para pasar por Cada partido es un objeto de clase DOMElement muestra.

Conclusión:
Zend también ofrece una buena Zend_Http Zend_Dom y cliente HTTP. Si utiliza otras clases ya en su proyecto desde el Zend Framework, este método se recomienda.

Outlook:
En la Parte 3 dejo el mundo de PHP e imaginar con HttpUnit un cliente HTTP muy cómodo y rico en funciones para Java.

gklinkmann escrito por \ \ tags: , ,

Añadir un comentario

Sí, me gustaría ser notificado sobre comentarios!