Para realizar una petición Post enviando contenido Json en php, podemos utilizar la curl_init() la cual nos crea una sesión de tipo cURL con la cual podemos establecer conexión a una url.
Junto con la función curl_init(), debemos utilizar la función curl_setopt() en la cual enviaremos las opciones de nuestra petición y el contenido json. Y también utilizaremos la función curl_exec() que es la que se encarga de mandar el mensaje.
Y para dejar todo esto claro a continuación un código sencillo en el cual voy comentando paso a paso que se está realizando:
//url de la petición
$url = 'https://pato.com/login';
//inicializamos el objeto CUrl
$ch = curl_init($url);
//el json simulamos una petición de un login
$jsonData = array(
'usuario' => 'pato', //código fijo
'password' => 'pato123456'
);
//creamos el json a partir de nuestro arreglo
$jsonDataEncoded = json_encode($jsonData);
//Indicamos que nuestra petición sera Post
curl_setopt($ch, CURLOPT_POST, 1);
//para que la peticion no imprima el resultado como un echo comun, y podamos manipularlo
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Adjuntamos el json a nuestra petición
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Agregamos los encabezados del contenido
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
//ignorar el certificado, servidor de desarrollo
//utilicen estas dos lineas si su petición es tipo https y estan en servidor de desarrollo
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($process, CURLOPT_SSL_VERIFYHOST, FALSE);
//Ejecutamos la petición
$result = curl_exec($ch);
Nota: La línea comentada: «curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE)» sirve para peticiones a servidores https desde un servidor de desarrollo el cual no tiene modo seguro.
