Tabla de contenidos
- 38.1. Introducción
- 38.2. Zend_Http_Client - Uso avanzado
- 38.2.1. Redirecciones HTTP
- 38.2.2. Añadir cookies y usar la persistencia de cookies
- 38.2.3. Establecer cabeceras de petición personalizadas
- 38.2.4. Subida de archivos
- 38.2.5. Enviar datos POST en bruto
- 38.2.6. Autenticación HTTP
- 38.2.7. Enviar múltiples peticiones con el mismo cliente
- 38.2.8. Transmisión de datos (streaming)
- 38.3. Zend_Http_Client - Adaptadores de conexión
- 38.4. Zend_Http_Cookie y Zend_Http_CookieJar
- 38.4.1. Introducción
- 38.4.2. Instanciar objetos Zend_Http_Cookie
- 38.4.3. Métodos getter de Zend_Http_Cookie
- 38.4.4. Zend_Http_Cookie: comparación con un escenario
- 38.4.5. La clase Zend_Http_CookieJar: instanciación
- 38.4.6. Añadir cookies a un objeto Zend_Http_CookieJar
- 38.4.7. Recuperar cookies de un objeto Zend_Http_CookieJar
- 38.5. Zend_Http_Response
- 38.6. Zend_Http_UserAgent
- 38.7. La interfaz UserAgent Device
- 38.8. El adaptador UserAgent Features
- 38.9. El adaptador UserAgent Features de Browscap
- 38.10. El adaptador UserAgent Features de DeviceAtlas
- 38.11. El adaptador UserAgent Features de TeraWurfl
- 38.12. La interfaz UserAgent Storage
- 38.13. El adaptador UserAgent Storage de Session
Zend_Http_Client proporciona una interfaz sencilla para realizar
peticiones del protocolo de transferencia de hipertexto (HTTP). Zend_Http_Client soporta la mayoría de
las características simples esperadas de un cliente HTTP, así como algunas
características más complejas, como la autenticación HTTP y la subida de archivos. Las
peticiones exitosas (y la mayoría de las fallidas también) devuelven un objeto Zend_Http_Response,
que proporciona acceso a las cabeceras y al cuerpo de la respuesta (vea
esta sección).
El constructor de la clase acepta opcionalmente una URL como su primer parámetro
(puede ser tanto una cadena como un objeto Zend_Uri_Http), y un array
u objeto Zend_Config que contenga las opciones de configuración. Ambos pueden
omitirse, y establecerse más tarde usando los métodos setUri() y setConfig().
Ejemplo 38.1. Instanciar un objeto Zend_Http_Client
$client = new Zend_Http_Client('http://example.org', array(
'maxredirects' => 0,
'timeout' => 30));
// This is actually exactly the same:
$client = new Zend_Http_Client();
$client->setUri('http://example.org');
$client->setConfig(array(
'maxredirects' => 0,
'timeout' => 30));
// You can also use a Zend_Config object to set the client's configuration
$config = new Zend_Config_Ini('httpclient.ini', 'secure');
$client->setConfig($config);
![]() |
Nota |
|---|---|
|
El constructor y el método setConfig() aceptan un array asociativo
de parámetros de configuración, o un objeto Zend_Config. Establecer
estos parámetros es opcional, ya que todos tienen valores por defecto.
Tabla 38.1. Parámetros de configuración de Zend_Http_Client
| Parámetro | Descripción | Valores esperados | Valor por defecto |
|---|---|---|---|
| maxredirects | Número máximo de redirecciones a seguir (0 = ninguna) | integer | 5 |
| strict |
Indica si se realiza validación de los nombres de las cabeceras. Cuando se establece a
FALSE, las funciones de validación se omitirán.
Normalmente esto no debería cambiarse
|
boolean | TRUE |
| strictredirects | Indica si se debe seguir estrictamente el RFC al redireccionar (vea esta sección) | boolean | FALSE |
| useragent | Cadena identificadora del agente de usuario (enviada en las cabeceras de la petición) | string | 'Zend_Http_Client' |
| timeout | Tiempo de espera de la conexión (segundos) | integer | 10 |
| httpversion | Versión del protocolo HTTP (normalmente '1.1' o '1.0') | string | '1.1' |
| adapter | Clase adaptadora de conexión a usar (vea esta sección) | mixed | 'Zend_Http_Client_Adapter_Socket' |
| keepalive | Indica si se deben habilitar las conexiones keep-alive con el servidor. Útil y puede mejorar el rendimiento si se realizan varias peticiones consecutivas al mismo servidor. | boolean | FALSE |
| storeresponse |
Indica si se debe almacenar la última respuesta para su posterior recuperación con
getLastResponse(). Si se establece a
FALSE
getLastResponse() devolverá
NULL.
|
boolean | TRUE |
| encodecookies | Indica si se debe pasar el valor de la cookie a través de urlencode/urldecode. Habilitar esto rompe la compatibilidad con algunos servidores web. Deshabilitarlo limita el rango de valores que pueden contener las cookies. | boolean | TRUE |
Realizar peticiones HTTP simples es muy fácil de hacer usando el método request(), y rara vez necesita más de tres líneas de código:
Ejemplo 38.2. Realizar una petición GET simple
$client = new Zend_Http_Client('http://example.org');
$response = $client->request();
El método request() toma un parámetro opcional: el método de petición.
Puede ser GET, POST,
PUT, HEAD, DELETE,
TRACE, OPTIONS o CONNECT
tal como se definen en el protocolo HTTP
[6].
Para mayor comodidad, todos ellos están definidos como constantes de clase:
Zend_Http_Client::GET, Zend_Http_Client::POST y así sucesivamente.
Si no se especifica ningún método, se usa el método establecido por la última
llamada a setMethod(). Si
setMethod() nunca fue llamado, el método de petición
por defecto es GET (vea el ejemplo anterior).
Ejemplo 38.3. Usar métodos de petición distintos de GET
// Preforming a POST request
$response = $client->request('POST');
// Yet another way of preforming a POST request
$client->setMethod(Zend_Http_Client::POST);
$response = $client->request();
Añadir parámetros GET a una petición HTTP es
bastante sencillo, y puede hacerse especificándolos como parte de la URL, o usando
el método setParameterGet().
Este método toma el nombre del parámetro GET como su primer parámetro,
y el valor del parámetro GET como su segundo parámetro.
Por comodidad, el método setParameterGet() también puede aceptar un
único array asociativo de variables GET nombre => valor, lo cual puede
resultar más cómodo cuando es necesario establecer varios parámetros GET.
Ejemplo 38.4. Establecer parámetros GET
// Setting a get parameter using the setParameterGet method
$client->setParameterGet('knight', 'lancelot');
// This is equivalent to setting such URL:
$client->setUri('http://example.com/index.php?knight=lancelot');
// Adding several parameters with one call
$client->setParameterGet(array(
'first_name' => 'Bender',
'middle_name' => 'Bending'
'made_in' => 'Mexico',
));
Aunque los parámetros GET pueden enviarse con cualquier método de petición, los parámetros
POST solo se envían en el cuerpo de las peticiones POST. Añadir parámetros
POST a una petición es muy similar a añadir parámetros GET,
y puede hacerse con el método setParameterPost(), que es
similar en estructura al método setParameterGet().
Ejemplo 38.5. Establecer parámetros POST
// Setting a POST parameter
$client->setParameterPost('language', 'fr');
// Setting several POST parameters, one of them with several values
$client->setParameterPost(array(
'language' => 'es',
'country' => 'ar',
'selection' => array(45, 32, 80)
));
Note que al enviar peticiones POST, puede establecer tanto parámetros GET como
POST. Por otro lado, aunque establecer parámetros POST
para una petición que no sea POST no provocará un error, es inútil.
A menos que la petición sea una petición POST, los parámetros POST simplemente
se ignoran.
Zend_Http_Client proporciona métodos para acceder a la última petición
enviada y a la última respuesta recibida por el objeto cliente.
Zend_Http_Client->getLastRequest() no toma parámetros
y devuelve la última petición HTTP enviada por el cliente como una cadena.
De manera similar, Zend_Http_Client->getLastResponse() devuelve
la última respuesta HTTP recibida por el cliente como un
objeto Zend_Http_Response.
![[Note]](images/note.png)