Transfiriendo datos con la librería cURL en PHP

cURL es una utilidad de linea de comandos (curl) y una librería (libcurl) para realizar transferencias de archivos que soporta multitud de protocolos distintos (FTP, HTTP, etc.) y un sinfín de opciones. Tanto la utilidad como la librería son muy conocidas y de un uso muy extendido.

La librería se puede usar desde varios lenguajes de programación y entre ellos, como no, el PHP. Puedes encontrar en el manual todo un capítulo dedicado al conjunto de funciones cURL. De entre la infinidad de cosas que puedes hacer usando esta librería con PHP: obtener el contenido de una web, obtener datos XML (como RSS), subir o bajar archivos de servidores FTP, soporte para conexiones seguras (HTTPS, SCP), etc. Una opción destacable es el soporte de peticiones HTTP POST y GET con lo que podéis realizar scraping de casi cualquier cosa.

Un ejemplo de código para obtener el contenido de una página web (o un feed):

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, 'http://www.phpbsd.net/');
  3. curl_setopt($ch, CURLOPT_HEADER, false);
  4. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
  5. $resultado = curl_exec($ch);
  6. $error = curl_error($ch);
  7. curl_close($ch);

Con el código anterior en $resultado nos quedamos con los datos obtenidos o nada si ha ocurrido un error, si ese es el caso en $error tenemos un mensaje de texto con el error. Se usan las siguientes opciones:

  • CURLOPT_URL con la URL a descargar.
  • CURLOPT_HEADER a false para no incluir las headers HTTP en la respuesta.
  • CURLOPT_RETURNTRANSFER a true para que la función curl_exec() devuelva la respuesta como un string en lugar de printarla por pantalla.

Para más opciones consultar la documentación de la función curl_setopt().

De todas las funcionalidades que proporciona el soporte de cURL en PHP una de las más llamativas son todas las funciones multi_* para realizar peticiones en paralelo, esto puede llegar a ser muy útil en numerosas situaciones. En un siguiente post explicaré como lanzar peticiones paralelas desde PHP usando cURL.

Etiquetas en Technorati: , , , , ,
Entradas Relacionadas:

5 Respuestas a “Transfiriendo datos con la librería cURL en PHP”


  1. 1 Mar 31 May, 2008, 8:52 pm

    Hola, tengo un problema con un rss que he montado en mi página, por exigncias del servidor tengo que usar la libreria curl para leer un xml externo (esto funciona en otros servidores con un código php bastante sencillo:

    //—————————————————————-//
    $filename = “http://www.abc.es/rss/feeds/abc_ultima.xml”;
    header(”Content-type:text/xml”);
    readfile ($filename); y se llama desde ajax)

    //—————————————————————-//

    por seguridad según me han contado esto no funciona y he intentado hacerlo con la libreria indicada, el código que he usado es:

    //—————————————————————-//
    // Se crea un manejador CURL
    $ch = curl_init();

    // Se establece la URL y algunas opciones
    curl_setopt($ch, CURLOPT_URL, $filename);
    curl_setopt($ch, CURLOPT_HEADER, false);

    // Se obtiene la URL indicada
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);

    // Se cierra el recurso CURL y se liberan los recursos del sistema
    //curl_close($ch);
    //—————————————————————-//

    tal y como indicas en este artículo, consigo que lea el xml externo pero no lo carga el código ajax y no se que hacer, no se donde está el error, la verdad es que es la primera vez que uso esta librería.

    Muchas gracias

  2. 2 Mar 2 Jun, 2008, 8:38 pm

  3. 3 george el ermitaño 23 Jun, 2008, 2:58 am

    Muy buen codigo para quien empiece a trabajar con curl, yo soy uno de ellos ya que los codigs que he bajado para importar en mi web los contactos del msn de los usuarios para propagar mi web no me han servido y estoy partiendome la cabez con curl desde el principio… Todo lo estoy utilizando en mi web http://www.yoggisms.com.

    Saludos

  1. 1 Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier en PHPBSD.net Dirección Pingback a 6 Feb, 2007, 3:54 am
  2. 2 Leyendo XML desde PHP con SimpleXML en PHPBSD.net Dirección Pingback a 9 Feb, 2007, 5:48 am

Añade un Comentario