Ir al contenido principal

Realizar petición post con cURL

El siguiente ejemplo trata de como realizar una petición POST con cURL y obtener los datos del servidor en forma de JSON para su posterior manipulación. El ejercicio consiste en que el usuario ingrese un dato, en este caso el nombre de un sujeto y que el servidor devuelva la información de éste.

El archivo index.php básicamente es la interfaz gráfica de la aplicación. Consta de una caja de texto y un botón; cuando lo presiona abre una sesión cURL a la url especificada y hace comunicación en el servidor, si la búsqueda es exitosa devuelve los respectivos resultados.

Las principales líneas del código están comentadas para entender el proceso.

Archivo: index.php


<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {//cuando se procesa el formulario

$nombre=$_POST['usuario'];//capturo lo que tiene la caja de texto

$variables="nombre_user=".$nombre;//el parametro nombre_user almacena el valor ingresado
$url="http://localhost/curl/datos.php";

$ch = curl_init($url);//inicia sesion cURL

curl_setopt($ch, CURLOPT_POST, true);//peticion post
curl_setopt($ch, CURLOPT_POSTFIELDS, $variables);//le envio el parametro a la url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);//obtengo la respuesta del servidor
curl_close($ch); //liberar recursos

}

?>

<!DOCTYPE html>
<html>
<head>
<title>cURL</title>
</head>
<body>

<h2>cURL</h2>

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"] ?>"><--se procesa el mismo-->
Nombre: <input type="text" name="usuario" placeholder="Entre usuario" required="required" />
<input type="submit" value="Buscar" />

</form>

<hr>

<?php

if(isset($result)){//si esta variable (respuesta del servidor) tiene valor imprimo lo que tiene

$user=json_decode($result);//como el servidor devuelve la info en forma de json, lo convierto en array para manipularlo.

if(array_key_exists('nombre',$user)){//si el anterior array tiene una key nombre, es porque la busqueda fue exitosa.

echo 'Id: '.$user->id.'<br >';
echo 'Nombre: '.$user->nombre.'<br >';
echo 'Edad: '.$user->edad;
}else{
echo $user->message;
}

}

?>

</body>
</html>


Este archivo contiene la información de los usuarios en formato JSON, si el nombre ingresado por el usuario existe devuelve su información con forma de JSON.

Archivo: datos.php


<?php

#json
$json_users=' [{"id":"01","nombre":"John","edad":"26"},
{"id":"02","nombre":"Pete","edad":"34"},
{"id":"03","nombre":"Wilson","edad":"56"},
{"id":"04","nombre":"Alan","edad":"12"},
{"id":"05","nombre":"Rob","edad":"43"}] ';


$nombre_user=$_POST['nombre_user'];//recibo el valor ingresado por el usuario

$datos_users=json_decode($json_users);//convierto el anterior json en array para manipular datos

//la variable $respuesta envia los resultados
$respuesta='{"code":"404","message":"No encontrado"}';//si la búsqueda no contiene resultados envía un mensaje de no encontrado

for ($i=0; $i < count($datos_users); $i++) { //recorro el array para realizar la busqueda

if (strtolower($datos_users[$i]->nombre)==strtolower($nombre_user)){//si existe un usuario, le envio la respuesta de este en formato json

$respuesta='{"id":"'.$datos_users[$i]->id.'","nombre":"'.$datos_users[$i]->nombre.'","edad":"'.$datos_users[$i]->edad.'"}';
break; //detiene la busqueda

}
}

echo $respuesta;//respuesta final del servidor

?>


Descargar código en Github.

Comentarios

Entradas más populares de este blog

Buscador en tiempo real con AJAX, PHP y MySQL

Buscador realizado en HTML utilizando como lenguaje de programación PHP , la tecnología AJAX y a MySQL como motor de base de datos.

Funciones (subprocesos) en PSeInt

A partir de la version 20121010 (10/Octubre/2012) PSeInt permite la posibilidad de definir funciones al que el creador del mismo bautizó como subprocesos , en este tutorial explicaremos brevemente cómo se tratan dichas funciones. Para empezar una función no es más que un bloque de código con un determinado fin o propósito, podemos definir más de una y nos permiten ahorrar líneas código si nuestros programas son muy extensos o hay codificación redundante.

Convertir un decimal a binario en PSeInt

Utilizaremos el siguiente método para convertir números decimales a binarios (números que se sólo se componen de unos y ceros). El método es sencillo, consiste en dividir el número decimal entre dos, despues su cociente entre el mismo número y así sucesivamente hasta que finalmente el cociente (que se convierte en un divisor) sea igual a uno. Despúes organizamos los residuos desde el último al primero para obtener el número binario que buscamos.