Verwendung
Die wesentliche Aufgabe beim Implementieren eines HTTP-Request-Handlers ist, das Interface
IF_HTTP_EXTENSION zu implementieren. Dazu muss die Methode HANDLE_REQUEST() dieses Interfaces implementiert werden, um festlegen zu können, in welcher Art und Weise der HTTP-Request-Handler einen eingehenden HTTP-Request verarbeiten soll.Das UML-Diagramm im Abschnitt
Klassen und Interfaces des ICF zeigt den Zusammenhang zwischen den Klassen und Interfaces des ICF und dem Interface IF_HTTP_EXTENSION.Vorgehensweise
Legen Sie im Class Builder (Transaktion SE24) eine Klasse an, die den HTTP-Request-Handler darstellt, und ordnen Sie das Interface
IF_HTTP_EXTENSION zu.Nun können Sie die Methode
HANDLE_REQUEST() implementieren (Doppelklick auf Methode HANDLE_REQUEST()).Mit Hilfe der Referenz auf das Interface
IF_HTTP_SERVER als Argument der Methode HANDLE_REQUEST() können Sie auf die Request- und Response-Daten zugreifen. Das Interface IF_HTTP_EXTENSION unterstützt außerdem die Attribute FLOW_RC und LIFETIME_RC, die Sie mit Hilfe der Methode HANDLE_REQUEST() mit Inhalt füllen können, um so die Verarbeitung eines eingehenden Requests weiter detaillieren zu können. Die Einzelheiten zu den Attributen können in folgenden Abschnitten nachgelesen werden: IF_HTTP_SERVER IF_HTTP_RESPONSE und IF_HTTP_REQUEST IF_HTTP_ENTITY

Für einen eingehenden Request soll geprüft werden, ob die Verbindung zum Server funktioniert.
Im Browser wird also die URL
Der Service pingservice ist mittels der Transaktion SICF (siehe Abschnitt
Anlegen eines Services) gepflegt und hat als HTTP-Request-Handler die Klasse CL_HTTP_EXT_PING mit der Methode HANDLE_REQUEST ().Hier wird ein Datenfeld
‚data’ vom Typ String deklariert, um den Body der ausgehenden HTTP-Response aufzunehmen.data: data type string.
Sobald der HTTP-Request-Handler angesprochen wird, ist klar, dass der Verbindungstest zum Server erfolgreich war. Es geht nun darum, eine HTTP-Antwort an den Client zurückzuschicken, die dies signalisiert. Der Browser soll einfach die HTML-Zeile 'Server erfolgreich erreicht.' ausgeben.
Hierzu wird zunächst das
Header-Feld content-type der HTTP-Antwort auf den Wert text/html gesetzt, indem die Methode set_header_field() zum Setzen von Header-Feldern in der Antwort aufgerufen wird:|
server->response->set_header_field( name = 'Content-Type' value = 'text/html' ). |
Danach wird der HTTP-String
data mit dem String ‚Server erfolgreich erreicht.’ gefüllt:|
concatenate '<html>' '<body>' 'Server erfolgreich erreicht.'(001) '</body>' '</html into data. |
Abschließend wird dieser String via Referenz auf das Interface
IF_HTTP_SERVER der Methode set_cdata übergeben, um den Body der HTTP-Response mit diesem String zu belegen.|
server->response->set_cdata( data = data ). |
Damit ist die Ausgabe des Textes im Browser angesteuert, und der Client sieht, dass der Verbindungstest erfolgreich war.