Realizar una petición Post con Php enviando Json como contenido del mensaje.

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.

mm

About

Desarrollador de software, lector compulsivo.

View all posts by

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *