Python - Richieste HTTP personalizzate

Il protocollo HTTP (Hypertext Transfer Protocol) è un protocollo utilizzato per abilitare le comunicazioni tra client e server. Funziona come un protocollo di richiesta-risposta tra un client e un server. Il dispositivo richiedente è noto come client e il dispositivo che invia la risposta è noto come server.

L'urllib è la tradizionale libreria python che viene utilizzata nei programmi python per gestire le richieste http. Ma ora c'è urllib3 che fa più di quello che faceva urllib. Importiamo la libreria urllib3 per vedere come python può usarla per fare una richiesta http e ricevere una risposta. Possiamo personalizzare il tipo di richiesta scegliendo il metodo di richiesta.

Pip install urllib3

Esempio

Nell'esempio seguente utilizziamo l'oggetto PoolManager () che si prende cura dei dettagli di connessione della richiesta http. Successivamente utilizziamo l'oggetto request () per effettuare una richiesta http con il metodo POST. Infine usiamo anche la libreria json per stampare i valori ricevuti in 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 eseguiamo il programma sopra, otteniamo il seguente output:

{field': value'}

URL utilizzando una query

Possiamo anche passare parametri di query per creare URL personalizzati. Nell'esempio seguente il metodo di richiesta utilizza i valori nella stringa di query per completare l'URL che può essere ulteriormente utilizzato da un'altra funzione nel programma 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 eseguiamo il programma sopra, otteniamo il seguente output:

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