Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo hacer una petición POST a un servidor usando cURL en un script PHP

Imago voragine.net
[actualizado el ]Enlace permanente

cURL es muy útil para comunicarse con muchas APIs o más en general para automatizar peticiones y enviar datos entre servidores en internet. Cuando se usa cURL los datos se pueden enviar usando varios protocolos.

El siguiente snippet hace una petición a un servidor remoto enviando datos mediante el protocolo HTTP POST:

<?php
// abrimos la sesión cURL
$ch = curl_init();

// definimos la URL a la que hacemos la petición
curl_setopt($ch, CURLOPT_URL,"http://www.example.com/test.php");
// indicamos el tipo de petición: POST
curl_setopt($ch, CURLOPT_POST, TRUE);
// definimos cada uno de los parámetros
curl_setopt($ch, CURLOPT_POSTFIELDS, "postvar1=value1&postvar2=value2&postvar3=value3");

// recibimos la respuesta y la guardamos en una variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$remote_server_output = curl_exec ($ch);

// cerramos la sesión cURL
curl_close ($ch);

// hacemos lo que queramos con los datos recibidos
// por ejemplo, los mostramos
print_r($remote_server_output);
?>

Antes de poder usar cURL hay que asegurarse que está instalado ;) Si no lo está, se instala y se reinicia el servidor web:

apt-get install php-curl
service apache2 restart

10 comentarios

    • Por Miguel •

    apt-get install php-curl
    service apache2 restart

    De esta forma te olvidas de la dependencia de versión de php.

    1. Cierto Miguel! Mucho mejor usar el alias del paquete. Lo he cambiado en el artículo. Gracias.

    • Por Gezmat •

    Ahí estas integrando curl a un script, pero, ¿Como podría utilizarse para enviar un formulario por a través del protocolo SMTP?
    (mi verdadera pregunta es: ¿aún se necesita definir los parametros así?)

    // definimos cada uno de los parámetros
    curl_setopt($ch, CURLOPT_POSTFIELDS, «postvar1=value1&postvar2=value2&postvar3=value3»);

    • Por angel reinoso •

    Hola utilizo curl para sacar datos de una página y me funcionaba de maravillas ahora tengo un problema la pagina cambio y tiene una imagen de seguridad como puedo resolver esa traba

      • Por Ruben •

      Hola, lo pudiste solucionar? Me interesa

    • Por ALEJANDRO •

    Estoy usando curl para pasar parámetros y si tengo una cadena que necesito que pase un espacio final, éste no pasa, es como que hace un trim.
    Sugerencias??
    Muchas gracias

    1. Hola Alejandro,

      ¿has probado a codificar para url antes de enviar? Utilizando urlencode, por ejemplo.

    • Por Hugo •

    Hola, hice tu mismo codigo, pero no me envían las variables en la petición, a que sera?

    • Por Virginia •

    Hola, cómo recupero los parámetros de una petición hecha con curlphp en el servidor? es decir, yo como cliente envio mi peticion curl :

    curl_setopt_array($curl, array(
    CURLOPT_URL => «http://consultarapi/estado.php?orden=$delivery_id»,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => «»,
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => «GET»,
    CURLOPT_HTTPHEADER => array(
    «Accept: application/json»,
    «api-key: «.$API_KEY,
    «Content-Type: application/json»
    ),
    ));

    cómo «rescato» el $API_KEY en el servidor donde tengo consultarapi/estado.php?

    • Por aaron •

    Pero que mierda de sitio web tienes no se puede seleccionar el puto codigo

Dejar un comentario

*
*

 

No hay trackbacks