gradient

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/.

Angel Mavare

Apasionado por la tecnología y los medios digitales, Ingeniero de software, programador, aficionado a la ilustración y co-fundador de pixonauta.com.

Editado el: 17 marzo, 2022
Suscribirse
Notificar a
guest

6 Comentarios
Más antiguo
El mas nuevo Más votado
Inline Feedbacks
Ver todos los comentarios
Ricardo C.
Ricardo C.
2 years ago

Muchísimas gracias, me ha sido muy útil lo que has publicado. Está muy didáctico y bien explicado.

Fernando
Fernando
2 years ago

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!

Javier Cornejo
Javier Cornejo
1 year ago

Excelente explicación, es la primera vez que uso cURL. Ya estoy consumiendo una API con éxito.

Wil
Wil
25 days ago

Por qué cuando lo ejecuto siempre me devuelve «1» en respuesta