Categorías destacadas
programacion php    
Artículo
0
¡votar!

 Cómo hacer solicitudes HTTP con WordPress

Hacer peticiones HTTP en PHP no es difícil, y existe una variedadde métodos: el uso de fopen(), utilizando la extensión CURL, utilizando secuencias de archivo con fsockopen () y fwrite(), por ejemplo. El problema es: dependiendo de la configuración del servidor, esto podría o no podría funcionar en otro servidor. Labuena noticia es: una vez más, WordPress tiene una API que hace fácil y compatible con todas las configuraciones este proceso.

Introducción a la clase WP_Http

Desde la versión 2.7 de WordPress, se puede hacer uso de esta clase, pero a partir de la versión 3, para poder hacer uso de ella, hay que incluirla explicitamente en nuestro código.

if( !class_exists( 'WP_Http' ) )
include_once( ABSPATH . WPINC. '/class-http.php' );


El poder de esta clase, reside en que dependiendo de como está configurado el servidor y de los método que tenga implementado, utilizará la mejor de esas opciones para hacer las llamadas HTTP. Con esta clase, no hace falta comprobar si está activo fopen() o curl_init(), ya que ella se encarga de hacer todo esto.

El código básico que debemos de utilizar es:

request = new WP_Http;
$result = $request->request( 'http://some.url.you-need.to-fetch' );


La variable $result, será un array que contiene los siguientes elementos:

Headers: Un array con las cabeceras de la respuestas, por ejemplo “x-powered-by => PHP/5.2.1”
Body: La cadena de respuesta enviada por el servidor, como tú deberías verla en tu navegador.
Response: Un array de códigos de respuesta HTTP
cookies: un array de información de cookies

Veamos ahora un ejemplo más complejo. Supongamos que queremos recoger las últimas búsquedas en twitter sobre conejos.

$url = 'http://search.twitter.com/search.json?q=rabbits';
$request = new WP_Http;
$result = $request->request( $url );
$json = $result['body'];


Con esto conseguiremos recuperar una cadena JSON con los resultados de la búsqueda.

Ahora nos meteremos en un caso un poco más avanzado. Si necesitamos meter algunos parámetros por POST, lo podemos hacer de la siguiente forma.

$body = array(
   'nick' => 'ozh',
   'mood' => 'happy'
);
$url = 'http://your.api.url/';
$request = new WP_Http;
$result = $request->request( $url, array( 'method' => 'POST', 'body' => $body) );


Digamos que usted desea actualizar su cuenta de Twitter. Su método de actualización de estado es una simple solicitud, pero que además necesita de autenticación (es decir,http://twitter.com/statuses/update.xml pide su nombre de usuario y contraseña de Twitter)

Autenticación en las peticiones HTTP se logra mediante el envío de una cadena codificada en base64 del nombre de usuario, dos puntos y la contraseña (es decir, "usuario: contraseña")

Nuestro ejemplo Twitter sería algo sencillo, como:

// You would edit the following:
$username = 'joe'; // Twitter login
$password = '123456'; // Twitter password
$message = "Hey neat, I'm posting with the API";
 
// Now, the HTTP request:
$api_url = 'http://twitter.com/statuses/update.xml';
$body = array( 'status' => $message );
$headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
$request = new WP_Http;
$result = $request->request( $api_url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers ) );


Vía: Planetozh
   
Publicado por:
Administrador
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon