Solicitud cURL GET usando PHP

Olorunfemi Akinlua 13 junio 2022
  1. Utilice curl_init() y curl_setopt() para obtener una solicitud en PHP
  2. Use cURL con API (JSON) en PHP
Solicitud cURL GET usando PHP

En la web, y principalmente en HTTPS, usamos solicitudes GET para obtener una representación de recursos específica. Para la obtención de datos se emplean métodos GET.

Especialmente en escenarios de API y web scraping, los desarrolladores utilizan métodos específicos del idioma. Usamos funciones cURL para manejar solicitudes GET en PHP.

La biblioteca cURL maneja las operaciones desde la inicialización, la configuración de la conexión y las transferencias hasta la devolución de recursos. Para lograr todas estas operaciones, están disponibles funciones integradas como curl_close(), curl_init() a curl_exec().

Este tutorial analiza los diferentes casos de uso para las solicitudes cURL GET y las funciones correspondientes que lo hacen posible.

Utilice curl_init() y curl_setopt() para obtener una solicitud en PHP

El formato típico para obtener una solicitud de otro servidor o usuario implica el uso de las siguientes funciones básicas.

curl_init(); // initializes a cURL session
curl_setopt(); // changes the cURL session behavior with options
curl_exec(); // executes the started cURL session
curl_close(); // closes the cURL session and deletes the variable made by curl_init();

Verá las cuatro funciones en este artículo y la mayor parte del código de solicitud GET que escribirá utilizando la biblioteca cURL.

Ahora, para algunos ejemplos de uso, asignaremos la variable $url con la URL del sitio del que queremos obtener una solicitud e iniciaremos una sesión cURL usando las funciones curl_init(). Posteriormente especificamos la opción de transferencia cURL realizada sobre la URL especificada.

La primera instrucción de la función curl_setopt() contiene la opción “URL para buscar” con el valor asignado a la variable $url. La segunda instrucción de la función curl_setopt() contiene la opción devolver la transferencia como una cadena, con un valor booleano.

<?php

$url = "https://reqbin.com/echo";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);

?>

El resultado del código PHP anterior se encuentra a continuación.

Use curl_init y curl_setopt para obtener una solicitud en PHP

Use cURL con API (JSON) en PHP

Por lo general, al interactuar con las API, la respuesta de los datos suele ser JSON y, al usar las funciones cURL, podemos procesar correctamente estos objetos de datos en formato de matrices y pares de valor de atributo utilizando las funciones curl_getinfo() y json_encode(), entre otros.

Aquí, interactuaremos con una API de demostración de Usuario, obtendremos datos JSON usando la biblioteca cURL y codificaremos el archivo JSON usando la función apropiada.

  1. Inicializar la variable URL y sesión cURL.

    $url = 'https://jsonplaceholder.typicode.com/users';
    // Sample example to get data.
    $resource = curl_init($url);
    
  2. Configure las opciones de cURL y las variables de información.

    curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($resource);
    $info = curl_getinfo($resource);
    $code = curl_getinfo($resource, CURLINFO_HTTP_CODE);
    
  3. Depure para verificar el código de estado de respuesta (paso opcional), pero debería ver 200.

    echo $result.'<br>';
    echo "<pre>";
    print_r($info);
    echo "</pre>";
    
    // Get response status code
    echo "<pre>";
    print_r($code);
    echo "</pre>";
    
  4. Cierra la sesión cURL para gestionar mejor los recursos.

    curl_close($resource);
    
  5. Cree la plantilla de array para almacenar los datos obtenidos de la API a través de JSON.

    // set_opt_array
    $user = [
    	'name' => 'John Doe',
    	'username' => 'john',
    	'email' => 'john@example.com'
    ];
    
  6. Utilice curl_init() y curl_setopt_array() para procesar los datos JSON analizados desde la URL utilizando todas las opciones importantes.

    $resource = curl_init();
    curl_setopt_array($resource, [
    	CURLOPT_URL => $url,
    	CURLOPT_RETURNTRANSFER => true,
    	CURLOPT_POST => true,
    	CURLOPT_HTTPHEADER => ['content-type: application/json'],
    	CURLOPT_POSTFIELDS => json_encode($user),
    ]);
    
  7. Utilice las funciones curl_exec() y curl_close() para ejecutar la sesión inicializada de cURL y cerrar la sesión de cURL y liberar todos los recursos, respectivamente. Sin embargo, en PHP 8.0.0 y superior, la función curl_close() no tiene efecto.

    $result = curl_exec($resource); // creates and returns result
    curl_close($resource);
    echo $result;
    

La salida del código dará como resultado la siguiente matriz multidimensional de PHP.

[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
  {
    "id": 2,
    "name": "Ervin Howell",
    "username": "Antonette",
    "email": "Shanna@melissa.tv",
    "address": {
      "street": "Victor Plains",
      "suite": "Suite 879",
      "city": "Wisokyburgh",
      "zipcode": "90566-7771",
      "geo": {
        "lat": "-43.9509",
        "lng": "-34.4618"
      }
    },
    "phone": "010-692-6593 x09125",
    "website": "anastasia.net",
    "company": {
      "name": "Deckow-Crist",
      "catchPhrase": "Proactive didactic contingency",
      "bs": "synergize scalable supply-chains"
    }
  },
  {
    "id": 3,
    "name": "Clementine Bauch",
    "username": "Samantha",
    "email": "Nathan@yesenia.net",
    "address": {
      "street": "Douglas Extension",
      "suite": "Suite 847",
      "city": "McKenziehaven",
      "zipcode": "59590-4157",
      "geo": {
        "lat": "-68.6102",
        "lng": "-47.0653"
      }
    },
    "phone": "1-463-123-4447",
    "website": "ramiro.info",
    "company": {
      "name": "Romaguera-Jacobson",
      "catchPhrase": "Face to face bifurcated interface",
      "bs": "e-enable strategic applications"
    }
  },
....
]
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - PHP Curl