En PlanetOzh hacen un interesante tutorial de como lanzar peticiones HTTP mediante la API de WordPress. Desde la versión 2.7, disponemos de un interfaz muy sencillo para lanzar peticiones HTTP a servicios externos.
Peticiones HTTP
El fichero http.php
que podemos encontrar en wp-includes/ nos permite hacer llamadas tan sencillas como estas:
$request = new WP_Http;
$result = $request->request( 'http://some.url.you-need.to-fetch' );
Como podemos ver, hacer las llamadas es realmente sencillo. Pero aquí no se queda la cosa:
Peticiones GET
Tambien podemos lanzar peticiones GET informando los parámetros como parte de la URL.
$url = 'http://search.twitter.com/search.json?q=rabbits';
$request = new WP_Http;
$result = $request->request( $url );
$json = $result['body'];
Peticiones POST
Si por lo contrario queremos enviar parámetros por POST, simplemente tendremos que cambiar la forma de enviarlos:
$body = array(
'nick' => 'ozh',
'mood' => 'happy'
);
$url = 'http://your.api.url/';
$request = new WP_Http;
$result = $request->request( $url, array( 'method' => 'POST', 'body' => $body) );
Respuesta
Una vez lanzada la petición, obtendremos una serie de parámetros con información sobre la respuesta del servidor externo.
- headers': Un array con las cabeceras de la respuesta
- 'body': La respuesta del servidor.
- 'response': Un array con los códigos HTTP de respuesta generalmente array('code'=>200, 'message'=>'OK')
- 'cookies': Un array con información de la cookie.
Ejemplo práctico
// Datos de Twitter
$username = 'joe'; // Twitter login
$password = '123456'; // Twitter password
$message = "Publicando desde la API";
// Lanzamos la petición HTTP
$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 ) );
Estas pocas líneas, nos permiten enviar a Twitter un actualización directamente desde nuestro WordPress, simplemente tendremos que informar los datos del usuario y lanzar la petición a la URL que obtenemos en la API de Twitter.
3 comentarios, 0 referencias
+
#