Tutorials  /  Python

Python HTTP Client Request - Leitfaden

Ccentron Redaktion · Februar 2024 ·3 Min. Lesezeit ·Python, Tutorial

Das Python HTTP-Modul definiert Klassen, die die Client-Seite der HTTP- und HTTPS-Protokolle bereitstellen. In den meisten Programmen wird das HTTP-Modul nicht direkt verwendet, sondern mit dem urllib-Modul kombiniert, um URL-Verbindungen und Interaktionen mit HTTP-Anfragen zu handhaben. Heute lernen wir, wie man einen Python HTTP-Client verwendet, um eine HTTP-Anfrage zu stellen und dann den Antwortstatus zu analysieren und Daten aus dem Antwortkörper zu erhalten.

Python HTTP-Client

In diesem Beitrag zum Python HTTP-Modul werden wir versuchen, Verbindungen herzustellen und HTTP-Anfragen wie GET, POST und PUT zu machen. Lass uns anfangen.

Herstellen von HTTP-Verbindungen

Wir beginnen mit der einfachsten Sache, die das HTTP-Modul tun kann. Wir können leicht HTTP-Verbindungen mit diesem Modul herstellen. Hier ist ein Beispielprogramm:

Python
import http.client

connection = http.client.HTTPConnection('www.python.org', 80, timeout=10)
print(connection)

Python HTTP GET

Nun werden wir den HTTP-Client verwenden, um eine Antwort und einen Status von einer URL zu erhalten. Schauen wir uns einen Code-Ausschnitt an:

Python
import http.client

connection = http.client.HTTPSConnection("www.journaldev.com")
connection.request("GET", "/")
response = connection.getresponse()
print("Status: {} and reason: {}".format(response.status, response.reason))

connection.close()

In dem oben genannten Skript haben wir eine URL verwendet und den Status mit dem Verbindungsobjekt überprüft.

Denken Sie daran, eine Verbindung zu schließen, sobald Sie mit dem Verbindungsobjekt fertig sind. Beachten Sie auch, dass wir eine HTTPSConnection verwendet haben, um die Verbindung herzustellen, da die Website über das HTTPS-Protokoll bereitgestellt wird.

Erhalt von SSL: CERTIFICATE_VERIFY_FAILED-Fehler?

Als ich das obige Programm zum ersten Mal ausführte, erhielt ich folgenden Fehler im Zusammenhang mit SSL-Zertifikaten.

Console
$ python3.6 http_client.py 
Traceback (most recent call last):
  File "http_client.py", line 4, in 
    connection.request("GET", "/")
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 964, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1400, in connect
    server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 401, in wrap_socket
    context=self, session=session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in init
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)
$ 

Erhalt der Header-Liste aus der Antwort

Aus der erhaltenen Antwort enthalten die Header normalerweise auch wichtige Informationen über die Art der vom Server zurückgesendeten Daten und den Antwortstatus. Wir können eine Liste der Header aus dem Antwortobjekt selbst erhalten. Schauen wir uns einen Code-Ausschnitt an, der eine leicht modifizierte Version des letzten Programms ist:

Python
import http.client
import pprint

connection = http.client.HTTPSConnection("www.journaldev.com")
connection.request("GET", "/")
response = connection.getresponse()
headers = response.getheaders()
pp = pprint.PrettyPrinter(indent=4)
pp.pprint("Headers: {}".format(headers))

Python HTTP POST

Wir können auch Daten mit dem HTTP-Modul an eine URL POSTen und eine Antwort zurückbekommen. Hier ist ein Beispielprogramm:

Python
import http.client
import json

conn = http.client.HTTPSConnection('www.httpbin.org')

headers = {'Content-type': 'application/json'}

foo = {'text': 'Hello HTTP #1 **cool**, and #1!'}
json_data = json.dumps(foo)

conn.request('POST', '/post', json_data, headers)

response = conn.getresponse()
print(response.read().decode())

Python HTTP PUT-Anfrage

Natürlich können wir auch eine PUT-Anfrage mit dem HTTP-Modul selbst ausführen. Wir werden das letzte Programm selbst verwenden. Schauen wir uns einen Code-Ausschnitt an:

Python
import http.client
import json

conn = http.client.HTTPSConnection('www.httpbin.org')

headers = {'Content-type': 'application/json'}

foo = {'text': 'Hello HTTP #1 **cool**, and #1!'}
json_data = json.dumps(foo)

conn.request("PUT", "/put", json_data)
response = conn.getresponse()
print(response.status, response.reason)
VM

Passende Infrastruktur bei centron

Skripte und Dienste brauchen irgendwann eine Umgebung, die durchläuft: ccloud³ VMs ab 3,12 € im Monat, stundengenau abgerechnet. Cloud Server mieten →

Fazit

In dieser Lektion haben wir einfache HTTP-Operationen untersucht, die mit http.client durchgeführt werden können. Wir können auch einen Python-HTTP-Server mit dem SimpleHTTPServer-Modul erstellen. Python HTTP Client Request – Wesentlicher Leitfaden

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Python
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren