Solicitud cURL GET usando PHP
-
Utilice
curl_init()
ycurl_setopt()
para obtener una solicitud en PHP -
Use
cURL
con API (JSON) en 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
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.
-
Inicializar la variable URL y sesión
cURL
.$url = 'https://jsonplaceholder.typicode.com/users'; // Sample example to get data. $resource = curl_init($url);
-
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);
-
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>";
-
Cierra la sesión
cURL
para gestionar mejor los recursos.curl_close($resource);
-
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' ];
-
Utilice
curl_init()
ycurl_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), ]);
-
Utilice las funciones
curl_exec()
ycurl_close()
para ejecutar la sesión inicializada decURL
y cerrar la sesión decURL
y liberar todos los recursos, respectivamente. Sin embargo, en PHP 8.0.0 y superior, la funcióncurl_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 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