Sonntag, 5. Dezember 2010

Nachtrag zum HTTP Protokoll

In der letzen Vorlesung haben wir die Grundlagen des HTTP Protokolls kennengelernt. In diesem Blog Eintrag stelle ich Ihnen die Beispiele aus der letzten Vorlesung zum HTTP Protokoll nochmals knapp dar.  HTTP ist das Protokoll im Internet mit dem ein Web-Browser (z.B. Firefox) Daten von einem Webserver abfragt oder überträgt.


Die Abbildung oben zeigt die Grundsätzliche Funktionsweise des HTTP Protokolls. Der HTTP Client schickt einen sogenannten Request bestehenden aus einem Header und Body an den Server. Der HTTP Server beantwortet den Request mit einem Response. Der HTTP Respons bestehet wiederum aus einem Header und einem Body. Das HTTP Protokoll ist hierbei zustandslos.

Das HTTP Protokoll unterscheidet verschiedene Methoden, hier die wichtigsten:
  • GET zum anfordern einer Ressource vom Server. Beispielsweise Abfragen einer HTML Datei oder eines Videos.
  • POST mit dieser Methode kann man unbegrenzte, Mengen an Daten zum verarbeiten an einen HTTP Server schicken.
  • PUT dient dazu eine Ressource auf einen Webserver zu laden (anzulegen). 
  • DELETE löscht die angegebene Ressource auf dem Server.
  • TRACE liefert die Anfrage so zurück, wie sie empfangen wurde.
  • OPTIONS liefert eine Liste der vom Server unterstützen Methoden und Features.
Der Header einer HTTP Nachricht besteht aus Key-Value Paaren. Der erste Teil  im Header einer Nachricht vom Client gibt die verwendet HTTP Methode an z.B. GET oder POST, anschließend wird relative zum Server die Ressource angeben für die man den Request absetzen möchte z.B. / oder /index.html. In klassischen Internet-Anwendung spielen lediglich die Methoden GET und POST eine Rolle. Die andern Methoden wurden bisher kaum eingesetzt, erfahren aber gerade durch den REST Architekturstil eine Renaissance.

Je nach HTTP Methode schreibt das Protokoll eine Reihe an Header-Attributen vor. Beispielsweise muss der Server in der Response Nachricht einer GET Methode das Attribute Content-Length setzen damit der Client wissen kann wie lange er die Daten für den Body vom InputStream lesen muss. Das gleiche gilt logischer weise bei der Methode POST für den Client, bei dieser muss natürlich der Client die Content-Length der zu übertragenden Daten angeben.

Technisch betrachtet ist das Daten Format eines HTTP Request oder Response lediglich Text wobei natürlich die Daten im Body durchaus Binär sein können wie z.B. ein Video. Header und Body werden durch eine Leerzeile getrennt. Bei manchen Requests entfällt der Body bzw. ist der Body nicht erlaubt wie Beispielweise bei der Methode GET.

HTTP Nachrichten Beispiele
Das Listing unten zeigt einen einfachen HTTP GET Request.


Im folgenden Listing ist die Antwort des Webservers also die Response Nachricht auf den GET Request dargestellt.


Der Quelltext unten zeigt einen einfachen Java HTTP Client mit dem der GET Request von oben abgeschickt werden kann. In der Praxis nutz man natürlich fertig Bibliotheken die das HTTP Protokoll schon in einer Java API kapseln.


Das Listing unten zeigt einen einfachen HTTP POST Request, der wesentliche Unterschied zum GET von oben, bei einem POST besteht der Request aus einem Body und einem Header.


Im folgenden Listing ist die Antwort des Webservers auf den POST Request dargestellt, die Response besteht nur aus einem Header. Der Header enthält im location Attribute eine redirect URL auf die der Web-Browser in diesem Fall weitergeleitet werden sollen.


Der Quelltext unten zeigt einen einfachen Java Client mit dem der POST Request von oben abgeschickt werden kann.

Keine Kommentare:

Kommentar veröffentlichen