Python - HTTP-Antwort

Das http- oder Hyper-Text-Übertragungsprotokoll funktioniert auf dem Client-Server-Modell. Normalerweise ist der Webbrowser der Client und der Computer, auf dem sich die Website befindet, der Server. Beim Empfang einer Anfrage vom Client generiert der Server eine Antwort und sendet sie in einem bestimmten Format an den Client zurück.

Nach dem Empfang und der Interpretation einer Anforderungsnachricht antwortet ein Server mit einer HTTP-Antwortnachricht:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

In den folgenden Abschnitten werden die einzelnen Entitäten erläutert, die in einer HTTP-Antwortnachricht verwendet werden.

Nachrichtenstatuszeile

Eine Statuszeile besteht aus der Protokollversion, gefolgt von einem numerischen Statuscode und der zugehörigen Textphrase. Die Elemente sind durch Leerzeichen SP getrennt.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP-Version

Ein Server, der HTTP Version 1.1 unterstützt, gibt die folgenden Versionsinformationen zurück:

HTTP-Version = HTTP/1.1

Statuscode

Das Statuscode-Element ist eine dreistellige Ganzzahl, wobei die erste Ziffer des Statuscodes die Antwortklasse definiert und die letzten beiden Ziffern keine Kategorisierungsrolle haben. Es gibt 5 Werte für die erste Ziffer:

SN Code und Beschreibung
1 1xx: Informational

Dies bedeutet, dass die Anfrage empfangen wurde und der Prozess fortgesetzt wird.

2 2xx: Success

Dies bedeutet, dass die Aktion erfolgreich empfangen, verstanden und akzeptiert wurde.

3 3xx: Redirection

Dies bedeutet, dass weitere Maßnahmen ergriffen werden müssen, um die Anforderung abzuschließen.

4 4xx: Client Error

Dies bedeutet, dass die Anforderung eine falsche Syntax enthält oder nicht erfüllt werden kann.

5 5xx: Server Error

Dies bedeutet, dass der Server eine scheinbar gültige Anforderung nicht erfüllt hat.

HTTP-Statuscodes sind erweiterbar und HTTP-Anwendungen sind nicht erforderlich, um die Bedeutung aller registrierten Statuscodes zu verstehen.

Verwenden von Python-Anfragen

Im folgenden Python-Programm verwenden wir das urllib3-Modul, um eine http-GET-Anfrage zu stellen und die Antwort mit den Daten zu erhalten. Es enthält auch den Antwortcode, der auch von den Funktionen im Modul verwaltet wird. Das PoolManager-Objekt behandelt alle Details des Verbindungspoolings und auch die Thread-Sicherheit.

import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data
# get the status of the response
print resp.status

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

User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*
200