Petición vía POST con CURL en PHP

Cómo generar una petición POST con curl en PHP, muy útil para conectar con servicios web

Para poder realizar peticiones de tipo POST en PHP hay que usar la librería CURL. Esta librería simplifica en gran medida el código necesario para realizar peticiones de tipo GET y sobretodo de tipo POST, ofreciendo además varias posibilidades adicionales sobre la misma conexión.

Una de las mayores diferencias entre una petición GET y POST es que la primera se le pueden pasar los parámetros en la misma dirección URL, mientras que en una petición de tipo POST los parámetros se pasan a parte.

Veamos un ejemplo completo. Primero definimos la url y los parámetros que pasaremos en la petición:

$url =  "http://url-de-la-peticion.com";
$valor1 = "hola";
$valor2 = "adiós";

A continuación hay que codificar estos parámetros para que sean válidos con la función urlencode

$parametros_post = 'parametro1='.urlencode($valor1).'&parametro2='.urlencode($valor2);

* Atención: Con este tipo de petición sólo podremos pasar parámetros de tipo texto, las imágenes o archivos al usar codificación de tipo MULTIPART, se deben pasar como archivos binarios. Esto no lo veremos en este artículo.

Inicio de la sesión CURL, así como su configuración para esta petición:

$sesion = curl_init($url);
// definir tipo de petición a realizar: POST
curl_setopt ($sesion, CURLOPT_POST, true);
// Le pasamos los parámetros definidos anteriormente
curl_setopt ($sesion, CURLOPT_POSTFIELDS, $parametros_post);
// sólo queremos que nos devuelva la respuesta
curl_setopt($sesion, CURLOPT_HEADER, false);
curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
// ejecutamos la petición
$respuesta = curl_exec($sesion);
// cerramos conexión
curl_close($sesion);

Finalmente la variable $respuesta contiene la información que haya devuelto la petición y que trataremos según nos convenga.