Python: solicitudes HTTP personalizadas

El Protocolo de transferencia de hipertexto (HTTP) es un protocolo que se utiliza para habilitar las comunicaciones entre clientes y servidores. Funciona como un protocolo de solicitud-respuesta entre un cliente y un servidor. El dispositivo solicitante se conoce como cliente y el dispositivo que envía la respuesta se conoce como servidor.

El urllib es la biblioteca Python tradicional que se usa en los programas Python para manejar las solicitudes http. Pero ahora existe urllib3 que hace más de lo que solía hacer urllib. Importamos la biblioteca urllib3 para ver cómo Python puede usarla para realizar una solicitud http y recibir una respuesta. Podemos personalizar el tipo de solicitud eligiendo el método de solicitud.

Pip install urllib3

Ejemplo

En el siguiente ejemplo usamos el objeto PoolManager () que se encarga de los detalles de conexión de la solicitud http. A continuación, usamos el objeto request () para realizar una solicitud http con el método POST. Finalmente, también usamos la biblioteca json para imprimir los valores recibidos en formato json.

import urllib3
import json
http = urllib3.PoolManager()
r = http.request(
    'POST',
    'http://httpbin.org/post',
    fields={'field': 'value'})
print json.loads(r.data.decode('utf-8'))['form']

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

{field': value'}

URL mediante una consulta

También podemos pasar parámetros de consulta para crear URL personalizadas. En el siguiente ejemplo, el método de solicitud usa los valores en la cadena de consulta para completar la URL que puede ser utilizada por otra función en el programa Python.

import requests
 
query = {'q': 'river', 'order': 'popular', 'min_width': '800', 'min_height': '600'}
req = requests.get('https://pixabay.com/en/photos/', params=query)
 
print(req.url)

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

https://pixabay.com/en/photos/?q=river&min_width=800&min_height=600&order=popular