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.