Anfang des InhaltsbereichsVorgehensweisen Handlerklassen implementieren Dokument im Navigationsbaum lokalisieren

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

 

Beispiel

Für einen eingehenden Request soll geprüft werden, ob die Verbindung zum Server funktioniert.

Im Browser wird also die URL http://hostname:portname/pingservice eingegeben.

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.

Ende des Inhaltsbereichs