cURL es una librería de funciones soportada por PHP que permite realizar peticiones HTTP para transferencia de datos entre servidores. La librería viene integrada en PHP siempre y cuando se haya instalado con soporte cURL (puedes comprobarlo a través de phpinfo(); ).
Te muestro como funciona en un par de ejemplos básicos:
Petición GET
Obtenemos los datos desde una URL determinada. Podemos usar la variable $data para imprimir la respuesta ( echo $data ) o retornar el valor de una función.
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://url-de-la-api');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
//echo $data;
?>
Explicación línea por línea:
//Abrimos conexión cURL y la almacenamos en la variable $ch.
$ch = curl_init();
//Configuramos mediante CURLOPT_URL la URL de nuestra API
curl_setopt($ch, CURLOPT_URL, 'https://url-de-la-api');
//Abrimos conexión cURL y la almacenamos en la variable $ch.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 0 o 1, indicamos que no queremos al Header en nuestra respuesta
curl_setopt($ch, CURLOPT_HEADER, 0);
//Ejecuta la petición HTTP y almacena la respuesta en la variable $data.
$data = curl_exec($ch);
//Cerramos la conexión cURL
curl_close($ch);
Petición POST
Enviamos datos a una URL destino.
<?php
$fields = array('field1' => 'valor1', 'field2' => urlencode('valor 2'));
$fields_string = http_build_query($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://url-de-la-web/test");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string );
$data = curl_exec($ch);
curl_close($ch);
?>
Explicación línea por línea:
//Inicializamos nuestro arreglo de valores
//Si nuestros valores contienen espacios o caracteres especiales
//podemos convertirlos mediante urlencode("valor");
$fields = array('field1' => 'valor1', 'field2' => urlencode('valor 2'));
//convertimos el arreglo en formato URL
$fields_string = http_build_query($fields);
//Abrimos la conexión cURL
$ch = curl_init();
//Configuramos mediante CURLOPT_URL la URL destino
curl_setopt($ch, CURLOPT_URL, "https://url-de-la-web/test");
//Indicamos que se trata de una petición POST con valor "1" o "true"
curl_setopt($ch, CURLOPT_POST, 1);
//Asignamos los campos a enviar en el POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string );
//Ejecuta la petición HTTP y almacena la respuesta en la variable $data.
$data = curl_exec($ch);
//Cierra la conexión cURL
curl_close($ch);
Documentación de cURL con PHP
Como observamos, cURL es muy útil cuando necesitamos realizar una petición directamente de servidor a servidor. La documentación completa la consigues en la web de PHP. Ademas puedes encontrar información adicional en Wikipedia.
Espero que estos ejemplos hayan sido de tu utilidad, comparte la publicación con alguien que la necesite y recuerda que puedes encontrar mas artículos como este en https://pixonauta.com/snippets/.
Muchísimas gracias, me ha sido muy útil lo que has publicado. Está muy didáctico y bien explicado.
Me alegra que te haya servido Ricardo! Cualquier duda por acá estamos
Hola, muchas gracias! Muy bueno. Quisiera hacerte una consulta: con la petición POST cómo sería el código php para obtener la petición en https://url-de-la-web/test ? Otra vez, muchas gracias!
Hola Fernando! si enviaste por ejemplo un valor «field1» a través de post a la ruta https://url-de-la-web/test , puedes recibir los parámetros mediante el método POST en tu archivo php de esta forma:
Espero te sea útil, cualquier cosa acá estamos
Excelente explicación, es la primera vez que uso cURL. Ya estoy consumiendo una API con éxito.
Por qué cuando lo ejecuto siempre me devuelve «1» en respuesta