Cómo enviar y recibir datos JSON mediante PHP cURL

Al trabajar con servicios web y APIs, el hecho de enviar datos en JSON vía POST es una de las tareas más comunes. PHP cURL hace posible que podamos postear datos JSON a una URL. En este tutorial, te mostraré como enviar datos JSON mediante cURL y cómo recibir datos JSON en PHP.

Enviar y recibir datos JSON mediante JSON

En el siguiente ejemplo realizaremos un solicitud POST y enviaremos los datos JSON a una URL con cURL en PHP.

  • Especifica la URL ($url) donde debes enviar los datos JSON
  • Inicia cURL utilizando curl_init()
  • Define los datos en un array PHP y formatéalos a JSON utilizando json_encode()
  • Adjunta los datos JSON a los campos POST utilizando la opción CURLOPT_POSTFIELDS
  • Establece el Content-Type de la solicitud a application/json utilizando la opción CURLOPT_HTTPHEADER
  • Devuelve la respuesta como un string en lugar de enviarla utilizando la opción CURLOPT_RETURNTRANSFER

Finalmente, utilizaremos la función curl_exec() para realizar la petición POST

//API URL
$url = 'http://www.example.com/api';

//create a new cURL resource
$ch = curl_init($url);

//setup request to send json via POST
$data = array(
    'username' => 'codexworld',
    'password' => '123456'
);
$payload = json_encode(array("user" => $data));

//attach encoded JSON string to the POST fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);

//set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));

//return response instead of outputting
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//execute the POST request
$result = curl_exec($ch);

//close cURL resource
curl_close($ch);

Recibir datos JSON utilizando PHP

En el siguiente ejemplo muestro cómo obtener o extraer datos JSON utilizando PHP. Decodificaremos los datos JSON utilizando la función json_decode() y la función file_get_contents() la utilizaremos para recibir la información en un formato más legible.

$data = json_decode(file_get_contents('php://input'), true);

Fuente: codexworld.com

 

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP