Python - Benutzerdefinierte HTTP-Anforderungen

Das Hypertext Transfer Protocol (HTTP) ist ein Protokoll, mit dem die Kommunikation zwischen Clients und Servern ermöglicht wird. Es funktioniert als Anforderungs-Antwort-Protokoll zwischen einem Client und einem Server. Das anfordernde Gerät wird als Client bezeichnet, und das Gerät, das die Antwort sendet, wird als Server bezeichnet.

Die urllib ist die traditionelle Python-Bibliothek, die in Python-Programmen zur Verarbeitung der http-Anforderungen verwendet wird. Aber jetzt gibt es urllib3, das mehr kann als früher urllib. Wir importieren die urllib3-Bibliothek, um zu sehen, wie Python sie verwenden kann, um eine http-Anfrage zu stellen und eine Antwort zu erhalten. Wir können den Anfragetyp anpassen, indem wir die Anforderungsmethode auswählen.

Pip install urllib3

Beispiel

Im folgenden Beispiel verwenden wir das Objekt PoolManager (), das sich um die Verbindungsdetails der http-Anforderung kümmert. Als nächstes verwenden wir das request () -Objekt, um eine http-Anfrage mit der POST-Methode zu stellen. Schließlich verwenden wir auch die JSON-Bibliothek, um die empfangenen Werte im JSON-Format zu drucken.

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']

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:

{field': value'}

URL mit einer Abfrage

Wir können auch Abfrageparameter übergeben, um benutzerdefinierte URLs zu erstellen. Im folgenden Beispiel verwendet die Anforderungsmethode die Werte in der Abfragezeichenfolge, um die URL zu vervollständigen, die von einer anderen Funktion im Python-Programm weiter verwendet werden kann.

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)

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:

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