Introducción a cURL con PHP


cUrl es un software, proyecto y conjunto de librerías orientado a la transferencia de archivos, soporta los protocolos HTTP, HTTPS, FTP, LDAP, entre otros. Sirve principalmente para hacer comunicaciones entre servidores y hacer Web Services.

CURL existe de forma independiente como una aplicacion para la linea de comandos, tambien existe como un conjunto de librerias para diferentes lenguajes de programación como Python, PHP entre otros.

La sintaxis de CURL es sencilla, auque tambien se pueden hacer cosas mucho mas elaboradas y complejas.

La tarea de CURL es enviar peticiones a una URL, también es posible enviar parámetros, cookies … una vez enviada la petición se recibe la respuesta y se puede leer, guardar, procesar, etc, Dando lugar a una comunicación entre diferentes servidores u ordenadores.

Curl admite envió de peticiones GET, POST, Archivos, COOKIES, en este ejemplo vamos a ver un ejemplo de petición GET, mas adelante veremos peticiones POST y terminaremos haciendo un ejemplo mas elaborado con base de datos y mas.

Instalando CURL

La mayoria de las instalaciones de PHP por ejemplo XAMPP ya tienen la libreria CURL instalada.

La mayoria de servidores que soportan PHP tambien soportan la libreria CURL y todas sus funciones.

Código 1

Lo primero que vamos a comentar es que estamos en un ambien local, donde tenemos un archivo que sirve datos estaticos, este puede ser sustituido por datos de una base de datos, un archivo, etc.

<?php

$datos = array(
"agustin"=>array("nombre"=>"Agustin","Telefono"=>"9371331142"),
"agustin2"=>array("nombre"=>"Agustin2","Telefono"=>"9371331143"),
"agustin3"=>array("nombre"=>"Agustin3","Telefono"=>"9371331144"),
"agustin4"=>array("nombre"=>"Agustin4","Telefono"=>"9371331145"),
);


echo json_encode($datos);
?>

Estos datos estan en la URL, http://localhost/pruebacurldatos/datos.php

A esta URL haremos la petición CURL.

Código 2

El script con las llamadas CURL pueden estar en cualquier ubicación, ya sea en la misma carpeta u otra carpeta.

El código es el siguiente, agregue comentarios para que pueda ser entendido mejor.

<?php
$url = "http://localhost/pruebacurldatos/datos.php"; // Definimos la URL
$parametros = array();  // http_build_query($parametros)

$ci = curl_init(); // Inicializamos CURL
curl_setopt($ci,CURLOPT_URL,$url); // Enviamos la peticion GET de la URL
curl_setopt($ci,CURLOPT_RETURNTRANSFER,true); // Agregamos este parametro para almacenar los datos/resultados en una variable

$tmp = curl_exec($ci); // Ejecutamos la peticion GET

$data = json_decode($tmp); // Decodificamos los datos jSON a un Objeto Std
print_r($data);// Mostramos los resultados

curl_close($ci); // Cerramos CURL
?>

Y Ahora al ejecutar el archivo CURL vamos a leer el archivo de datos que tenemos en el código 1.

Es algo un poco sencillo, pero tiene muchas aplicaciones sobre todo si los datos del codigo 1 estan en otra pc de la RED o en un servidor.