Categories
Desarrollo y Programación

Como hacer peticiones http en PHP sin CURL

Vamos a hacer peticiones a servicios http o APIs con PHP sin CURL, este último muchas veces está bloqueado por el hosting y no es posible hacer peticiones a enlaces externos.

Vamos a utilizar la librería Requests for PHP en nuestro entorno de desarrollo local, así que es importante tener el manejador de dependencias: composer.

Instalación de Requests

Para instalar la librería es necesario ejecutar el siguiente comando:

composer require "rmccue/requests"

Nuestro composer.json debería verse como la siguiente imagen

composer.json (ejemplo)

Así debería lucir el árbol de dependencias y archivos:

Dependencias

Peticiones HTTP Get con PHP

Y listo a partir de ahora podemos solicitar datos a servicios y APIs externos, yo tuve esta necesidad pues algunos servicios de los que consumo no permiten solicitudes desde el browser.

Peticiones HTTP Post con PHP

Si queremos enviar datos, debemos colocarlos dentro de un array. Es importante conocer el tipo de envío que debemos hacer en post, ya sea para un multipart/form-data o un application/json.

Este dato debemos revisarlo con el proveedor del servicio, si es necesario enviar llaves de autenticación u otro dato en las cabeceras, podemos agregar este dato en otro array.

Peticiones HTTP PUT, PATCH y DELETE con PHP

El resto de peticiones se pueden hacer con los métodos:

Requests::put($url, $headers, $data, $options);
Requests::patch($url, $headers, $data, $options);
Requests::delete($url, $headers, $options);

Status Code y Headers de Peticiones HTTP con PHP

Para obtener el codigo de estado se obtiene de la variable de respuesta:

$response->status_code

En el caso de la cabecera es necesario agregar el nombre de la cabecera requerida. NOTA: no distingue entre mayusculas y minusculas

$response->headers['Date'];

Comentarios Finales

Esta por demás decirlo, pero siempre que importen la librería al proyecto es necesario subirla a su host para que funcione, así que la carpeta vendor ahora debería estar incluida en el servidor.

Las cabeceras de autenticación se envían en el array de $headers, pero se debe consultar con el proveedor del servicio cuales se deben enviar.

Y listo ya no es necesario preocuparse por que el servidor tenga soporte para CURL, que tengan felices proyectos y que todo vaya sin bugs, un Saludo afectuoso y nos vemos en el siguiente tutorial.