Cliente HTTP
Tenemos un cliente HTTP que puedes utilizar para consultar APIs, descargar contenido, consultar otras webs, etc.
Haciendo una consulta
En este ejemplo consultaremos nuestra web y almacenaremos el resultado (el html) en la variante $html.
use FacturaScripts\Core\Http;
$html = Http::get('http://facturascripts.com')->body();
Obtener json
Si vamos a consultar una web que devuelve json, por ejemplo una API, podemos llamar directamente al método json()
en lugar de a body()
.
$json = Http::get('https://facturascripts.com/PluginInfoList')->json(false); // devuelve un objeto
$jsonArray = Http::get('https://facturascripts.com/PluginInfoList')->json(); // devuelve un array
Obtener las cabeceras
Podemos obtener todas las cabeceras con la función headers()
o una concretra con la función header()
.
$request = Http::get('http://facturascripts.com');
$headers = $request->headers(); // obtenemos todas las cabeceras
$total = $request->header('x-total'); // obtenemos la cabecera 'x-total'
Control de errores
Tenemos una serie de funciones que podemos usar para comprobar si la petición ha devuelto errores o no, y cuales. Las funciones son ok()
, failed()
, notFound()
, errorMessage()
y status()
.
$request = Http::get('https://facturascripts.com/PluginInfoList');
if ($request->ok()) {
// la respuesta es correcta, podemos consultar los datos con body()
echo $request->body();
}
if ($request->failed()) {
// la respuesta no es correcta, podemos consultar el error con errorMessage()
echo $request->errorMessage();
// también el código de error
echo $request->status();
}
if ($request->notFound()) {
// la respuesta no es correcta, ha devuelto código 404
}
Descargar archivos
Si deseas no solo consultar una url, sino almacenar la respuesta en un archivo, es decir, descargar ese archivo a disco. Puedes usar la función saveAs()
.
Http::get('https://facturascripts.com/PluginInfoList')
->saveAs('lista.json'); // devuelve true si se descarga correctamente
En este caso se guarda en el archivo lista.json de la carpeta de FacturaScripts.
Establecer timeout
Podemos establecer un tiempo máximo de ejecución con la función setTimeout()
.
$json = Http::get('https://facturascripts.com/PluginInfoList')
->setTimeout(10)
->json();
Añadir cabeceras
Podemos añadir una cabecera a la petición con la función setHeader()
o varias con la función setHeaders()
.
$json = Http::get('https://facturascripts.com/PluginInfoList')
->setHeader('mi-cabecera', 'mi-valor')
->json();
$json2 = Http::get('https://facturascripts.com/PluginInfoList')
->setHeaders([
'mi-cabecera-1', 'mi-valor-1',
'mi-cabecera-2', 'mi-valor-2'
])
->json();
Añadir token
Podemos establecer un token con las funciones setToken()
y setBearerToken()
, dependiendo del tipo que queramos usar.
$json = Http::get('https://facturascripts.com/PluginInfoList')
->setToken('mi-token')
->json();
$json2 = Http::get('https://facturascripts.com/PluginInfoList')
->setBearerToken('mi-bearer-token')
->json();
Establecer usuario y contraseña
Si queremos usar un usuario y contraseña, podemos usar la función setUser()
.
$json = Http::get('https://facturascripts.com/PluginInfoList')
->setUser('mi-usuario', 'mi-contraseña')
->json();
Hacer una petición post
Podemos hacer una petición POST, es decir, enviar datos como si fuese un formulario, llamando a la función post en lugar de a get.
// enviamos los datos como un formulario
$json = Http::post('https://facturascripts.com', [
'dato1' => 'valor1',
'dato2' => 'valor2'
])
->json(); // recibimos como json y lo convertimos en array asociativo
Si queremos enviar los datos en formato json, podemos usar el método postJson()
, que convierte el array de datos a json y lo envía con la cabecera correspondiente:
// enviamos los datos en formato json
$json = Http::postJson('https://facturascripts.com', [
'dato1' => 'valor1',
'dato2' => 'valor2'
])
->json(); // recibimos como json y lo convertimos en array asociativo
También tenemos disponibles las funciones put()
y delete()
para hacer las correspondientes peticiones.