Python - solicitações HTTP personalizadas

O protocolo de transferência de hipertexto (HTTP) é um protocolo usado para permitir a comunicação entre clientes e servidores. Ele funciona como um protocolo de solicitação-resposta entre um cliente e um servidor. O dispositivo solicitante é conhecido como cliente e o dispositivo que envia a resposta é conhecido como servidor.

A urllib é a biblioteca python tradicional que é usada em programas python para lidar com as solicitações http. Mas agora existe o urllib3, que faz mais do que o urllib costumava fazer. Importamos a biblioteca urllib3 para ver como o python pode usá-la para fazer uma solicitação http e receber uma resposta. Podemos personalizar o tipo de solicitação, escolhendo o método de solicitação.

Pip install urllib3

Exemplo

No exemplo abaixo, usamos o objeto PoolManager () que cuida dos detalhes de conexão da solicitação http. Em seguida, usamos o objeto request () para fazer uma solicitação http com o método POST. Por fim, também usamos a biblioteca json para imprimir os valores recebidos no 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']

Quando executamos o programa acima, obtemos a seguinte saída -

{field': value'}

URL usando uma consulta

Também podemos passar parâmetros de consulta para construir URLs personalizados. No exemplo a seguir, o método de solicitação usa os valores na string de consulta para completar a URL, que pode ser usada posteriormente por outra função no 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)

Quando executamos o programa acima, obtemos a seguinte saída -

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