Anfrage:
GET /infotext.html HTTP/1.1
Host: www.example.net
Antwort:
HTTP/1.1 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: 123456 (Größe von infotext.html in Byte)
Content-Language: de (nach RFC 3282 sowie RFC 1766)
Connection: close
Content-Type: text/html
Nachrichtenrumpf
Das Hypertext Transfer Protocol (HTTP, englisch für Hypertext-Übertragungsprotokoll) ist ein Protokoll zur Übertragung von Nachrichten und Daten. Es wird hauptsächlich eingesetzt, um Webseiten (Hypertext-Dokumente) aus dem World Wide Web (WWW) in einen Webbrowser zu laden. Es ist jedoch nicht prinzipiell darauf beschränkt und auch als allgemeines Dateiübertragungsprotokoll sehr verbreitet.
Jede Nachricht besteht dabei aus zwei Teilen, dem Nachrichtenkopf (englisch Message Header, kurz: Header oder auch HTTP-Header genannt) und dem Nachrichtenrumpf (englisch Message Body, kurz: Body). Der Nachrichtenkopf enthält die Anfragemethode und Informationen über den Nachrichtenrumpf wie etwa verwendete Kodierungen oder den Inhaltstyp. Der Nachrichtenrumpf enthält die Nutzdaten (siehe HTML unten).
Von den Nachrichten gibt es zwei unterschiedliche Arten: die Anfrage (englisch Request) vom Client an den Server und die Antwort (englisch Response) als Reaktion darauf vom Server zum Client. Die mbed Board's können als HTTP Client oder als HTTP Server Eingesetzt werden.
- GET: ist die gebräuchlichste Methode. Mit ihr wird eine Ressource (zum Beispiel eine HTML Datei) vom Server angefordert.
- POST: schickt Daten zur weiteren Verarbeitung zum Server.
- PUT: dient dazu eine Ressource (zum Beispiel eine Datei) auf einen Webserver hochzuladen.
- DELETE: löscht die angegebene Ressource auf dem Server.
Heute ist PUT, ebenso wie DELETE, kaum implementiert. Beides erlangt jedoch mit dem REST Programmierparadigma neue Bedeutung.
- Holen, Schreiben und Löschen von Daten und Dateien auf HTTP Servern.
Die Hypertext Markup Language (engl. für Hypertext-Auszeichnungssprache), abgekürzt HTML, ist eine textbasierte maschinenlesbare Sprache (markup language) zur Strukturierung digitaler Dokumente wie Texte mit Hyperlinks, Bildern und anderen Inhalten.
HTML-Dokumente sind die Grundlage des World Wide Web und werden von Webbrowsern dargestellt.
Das Beispiel http-example Demonstriert die Verwendung von HTTP GET und HTTP POST.
Weitere Beispiele findet man auf http://os.mbed.com/teams/sandbox/code/http-example/ oder im Verzeichnis Cloud.
Compilieren
Umgebung/Board | Link/Befehl |
---|---|
CLI (IoTKit K64F) | mbed compile -m K64F --source . --source ../IoTKitV3/http/http-example; cp BUILD/K64F/GCC_ARM/template.bin $DAPLINK |
CLI (DISCO_L475VG_IOT01A) | mbed compile -m DISCO_L475VG_IOT01A -f --source . --source ../IoTKitV3/http/http-example |
CLI (nucleo_f303re) | mbed compile -m nucleo_f303re -f --source . --source ../IoTKitV3/http/http-example |
Für ein komplexeres Beispiel wollen wir via IoTKit eine BPMN Prozess starten.
Dazu verwenden wir die Camunda BPMN Workflow Engine aus dem Edge Beispiel.
Zuerst installieren wir die Camunda BPMN Workflow Engine wie im Edge Beispiel beschrieben, veröffentlichen den Rechnungsprozess und laden das entsprechende Programm, zum auslösen des Prozesses, auf das Board.
Beim Programm handelt es sich um eine Variante des Cloud Beispiels HallSensorAlarm. Welches beim feststellen eines Magneten über dem Hall-Sensor eine HTTP-POST sendet. Dieser erstellt einen neuen Prozess in der Camunda BPMN Workflow Engine.
Dieses ist in den Online Compiler zu importieren und auf ca. Zeile 63 der URL zur Camunda BPMN Workflow Engine entsprechend anzupassen:
HttpRequest* post_req = new HttpRequest( network, HTTP_POST, "http://<IP-Adresse>:30880/engine-rest/process-definition/key/RechnungStep3/start" );
Compilieren
Umgebung/Board | Link/Befehl |
---|---|
Online Compiler | HallSensorBPMN |
CLI (IoTKit K64F) | mbed compile -m K64F --source . --source ../IoTKitV3/http/HallSensorBPMN; cp BUILD/K64F/GCC_ARM/template.bin $DAPLINK |
CLI (DISCO_L475VG_IOT01A) | mbed compile -m DISCO_L475VG_IOT01A -f --source . --source ../IoTKitV3/http/HallSensorBPMN |
CLI (nucleo_f303re) | mbed compile -m nucleo_f303re -f --source . --source ../IoTKitV3/http/HallSensorBPMN |