En este tutorial vamos a ver las diferentes opciones de cURL para Webservices, es decir, cómo pasar datos mediante POST o cómo autenticarnos en caso sea necesario utilizar un usuario y una contraseña.
Lo primero que debemos tener es el ENDPOINT de nuestro servidor en el cual están alojados los servicios web. Luego debemos ver mediante qué método llamaremos a nuestros servicios. Tenemos basicamente 2 opciones para llamarlos.
- Curl
- file_get_contents
Cada una de estas opciones tiene sus ventajas y desventajas. En este caso estaremos utilizando Curl para el consumo de los servicios web. En caso no lo sepan, Curl nos permitirá hacer diferentes tipos de “request” o consultas a una página determinada, permitiendonos agregar cabeceras e información adicional a la misma.
Lo primero que debemos hacer es inicial Curl en PHP y guardar el ENDPOINT en una variable. Para esto, debemos tener las siguiente líneas:
$curl = curl_init(); $url = "http://dirreccion-endpoint";
Luego debemos poner el tipo de llamada que será (POST, PUT, GET, etc) y en caso tenga parámetros, también debemos agregarlos. Esto lo podemos hacer de la siguiente forma:
curl_setopt($curl, CURLOPT_POST, 1); //en caso sea post curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //asumiendo que $data: array("parametro" => "valor")
Luego, en caso de que nuestro servidor de servicios web requiera autenticacion, debemos enviarle el usuario y password de la siguiente forma:
curl_setop($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "usuario:clave");
Luego debemos especificar nuestro ENDPOINT. Para esto, agregamos lo siguiente:
curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
Por último, debemos consumir el servicio web. Al momento de ser consumido, debemos guardar el resultado que este devuelve para posterior uso. Esto lo podemos realizar de la siguiente forma:
$result = curl_exec($curl);
Ya teniendo guardado el resultado en la variable $result, vamos a cerrar la conexión:
curl_close($curl);
Con esto indicado, ya hemos podido consumir el servicio web autenticandonos con un usuario y contraseña además de guardar el resultado en la variable $result. A continuación se muestra el código consolidado:
<?php $curl = curl_init(); $url = "http://dirreccion-endpoint"; curl_setopt($curl, CURLOPT_POST, 1); //en caso sea post curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //asumiendo que $data: array("parametro" => "valor") curl_setop($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "usuario:clave"); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); ?>