Buenas drupaleros,
en la píldora drupaliana de hoy, os voy a contar cómo hacer una serie de peticiones Post a través de curl.
Primeramente debemos asegurarnos que tenemos instalada la extensión de curl en nuestro servidor libcurl
A continuación, debemos incluir en nuestro módulo, el código para hacer las llamadas. El lugar dónde incluirlo, lógicamente, dependerá de lo que queramos hacer. Puede que las peticiones las queramos hacer cuando se ejecute el cron, puede ser que las queramos hacer cuando se produzca una situación particular, o puede que las queramos lanzar cuando nosotros queramos.
En nuestro caso, vamos lanzar una serie de peticiones post con curl, cuando se ejecute una determinada url. El acceso a esa url, vendrá controlada por permisos.
<?php
$items['lanzar-peticiones/%'] = array(
'title' => 'Lanzar peticiones',
'page callback' => 'lanzar_peticiones',
'page arguments' => array(1),
'access callback' => 'admin_peticiones',
'type' => MENU_CALLBACK,
);
A continuación la función a la que hacemos referencia:
<?php
function lanzar_peticiones($nid) {
//…
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"https://unsitio.com");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11');
curl_setopt($ch, CURLOPT_FAILONERROR, 1); //terminar en caso de error
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// Permitir Redirecciones
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // Resultados en una variable
curl_setopt($ch, CURLOPT_TIMEOUT, 10); //timeout.
curl_setopt($ch, CURLOPT_POST, 1); // Para que sea por POST
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(el_contenido_que_queramos)));
$server_output = curl_exec ($ch);
curl_close ($ch);
//...
}
Con esto habremos lanzado las peticiones que queramos por Post utilizando curl.
Ejemplos en los que puede resultar interesante utilizar curl: