/**
* Ejemplo de cómo usar PHP, JSON y cURL para enviar
* datos codificados a otro servidor
*
* @author parzibyte
*/
# Definimos los datos que vamos a enviar, estos pueden venir de cualquier lugar
# Los hacemos complejos y largos para demostrar cómo se pueden anidar
$persona = [
"rut" => "1111-1",
"nombre" => "Bayron Jeremy Diaz Godoy",
"estado_civil" => "SOLTERO/A",
"nacionalidad" => "CHILENO",
"telefono" => "942144199",
"direccion" => "14 Oriente 14 Sur #075",
"region" => "Maule",
"comuna" => "Talca",
"ciudad" => "Talca",
"tipo_valor" => "TOTAL",
"moneda" => "PESOS",
"valor" => 500000,
"estado_contrato" => "CONTRATADO",
"activo" => 1,
"contrato_id" => 2
];
// Los codificamos
// recomendado: https://parzibyte.me/blog/2018/12/26/codificar-decodificar-json-php/
$datosCodificados = json_encode($persona);
// Comenzar a crear el objeto de curl
# A dónde se hace la petición...
$url = "https://chectime.com/app/api/trabajadores";
$ch = curl_init($url);
# Ahora le ponemos todas las opciones
# Nota: podríamos usar la versión corta de arreglos: https://parzibyte.me/blog/2018/10/11/sintaxis-corta-array-php/
curl_setopt_array($ch, array(
// Indicar que vamos a hacer una petición POST
CURLOPT_CUSTOMREQUEST => "POST",
// Justo aquí ponemos los datos dentro del cuerpo
CURLOPT_POSTFIELDS => $datosCodificados,
// Encabezados
//CURLOPT_HEADER => true,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Content-Length: ' . strlen($datosCodificados), // Abajo podríamos agregar más encabezados
'Personalizado: ¡Hola mundo!', # Un encabezado personalizado
),
# indicar que regrese los datos, no que los imprima directamente
CURLOPT_RETURNTRANSFER => true,
));
# Hora de hacer la petición
$resultado = curl_exec($ch);
# Vemos si el código es 200, es decir, HTTP_OK
$codigoRespuesta = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($codigoRespuesta === 200){
# Decodificar JSON porque esa es la respuesta
$respuestaDecodificada = json_decode($resultado);
# Simplemente los imprimimos
echo "El servidor dice que la hora de petición fue: " . $respuestaDecodificada->fechaYHora;
echo "
El servidor dice que el primer lenguaje es: " . $respuestaDecodificada->primerLenguaje;
echo "
Los encabezados que el servidor recibió fueron:
" . var_export($respuestaDecodificada->encabezados, true) . ""; echo "
" . var_export($respuestaDecodificada->gustosMusicales, true) . ""; echo "
" . var_export($respuestaDecodificada->libros, true) . ""; echo "