Beispielprogramm: Ausführung eines HTTP-Requests 
Das folgende ABAP-Programm führt einen HTTP-Request aus. Zu Testzwecken richtet sich der Aufruf an das sendende System selbst, d.h. der Application Server ABAP wird sowohl in der Client- als auch in der Serverrolle verwendet:
Achtung
Dieses Programm stellt ein vereinfachtes Beispiel dar, es handelt sich nicht um eine Vorlage für die professionelle Anwendung.
Ende des Codes |
Folgende Parameter müssen eingegeben werden:
Hinweis
Wird nichts angegeben, werden Defaultwerte verwendet: Host (Defaultwert: der aktuelle Host), Service (Defaultwert: Port 80 für HTTP und 443 für HTTPS), Protokoll (Default HTTP/1.0), Pfad zu dem gewünschten Service, wie in Abschnitt Implementierung beschrieben (Default /sap/public/ping).
Hinweis
Wird bei der Erzeugung des Client-Objekts die Verbindung über die Destination (SM59) benutzt, müssen diese Parameter in der Destination gepflegt werden.
Ende des Codes |
Nun wird das Objekt vom Typ CL_HTTP_CLIENT erzeugt. Hierzu gibt es 2 mögliche Vorgehensweisen:
Im einen Fall wird die create-Methode aufgerufen; hier müssen gewünschter Host und Port angegeben werden, des weiteren kann die Proxy-Einstellung festgelegt werden. Diese übersteuert eine eventuell in der Transaktion SICF vorgenommene Konfiguration (vgl. Proxy konfigurieren).
Im anderen Fall wird eine in der Transaktion SM59 gepflegte Destination verwendet (Methode create_by_destination). Hier müssen nur der Name der Destination sowie der Mandant angegeben werden. In beiden Fällen müssen Exceptions definiert werden (hier nicht gezeigt) und der letzte Fehlercode abgefragt werden.
Hinweis
SAP empfiehlt die Verwendung einer festen Destination, da sich hierdurch der Aufwand für Konfiguration der Kommunikationsparameter verringert.
Anschließend kann über das Objekt Client auf alle Daten (Request, Response, Header-Felder, etc) zugegriffen werden.
Das Scheme bestimmt, ob HTTP oder HTTPS verwendet wird.
* create HTTP client object(s) |
|
Ende des Codes |
Ende des Codes |
Ende des Codes |
|
Danach werden Header-Felder des Requests gesetzt. Das Setzen der HTTP-Request-Methode auf GET ist optional.
Hinweis
Wird dieses Feld nicht gesetzt, nimmt das System GET für den Fall, dass der HTTP-Request keinen Body enthält, ansonsten POST.
Das Setzen des Request-URI ist erforderlich, es sei denn, es wurde über die Destination (SM59) der gesamte Pfad als Pfad-Präfix angegeben. Hierzu verwenden Sie die Methode set_request_uri der Klasse cl_http_utility:
Ende des Codes |
Im Anschluss können beliebige Felder des Client-Kontrollblocks gefüllt werden.
Weitere Optionen
Sie können die Attribute PROPERTYTYPE_LOGON_POPUP, PROPERTYTYPE_REDIRECT und PROPERTYTYPE_ACCEPT_COMPRESS die im Default den Wert CO_ENABLED haben, deaktivieren (auf CO_DISABLED setzen).
Sie können PROPERTYTYPE_ACCEPT_COOKIE auf andere Werte setzen. Der Defaultwert ist CO_DISABLED, es stehen aber auch die Werte CO_ENABLED (Cookies immer akzeptieren), CO_PROMPT (beim Empfang des Cookies ein Popup senden, ob das Cookie akzeptiert werden soll) sowie CO_EVENT (Cookiebehandlung über das Ereignis EVENTKIND_HANDLE_COOKIE des Interfaces IF_HTTP_CLIENT) zur Verfügung.
Sie können PROPERTYTYPE_ACCEPT_COMPRESS auf den Wert CO_DISABLED setzen, damit der Partner seine Daten unkomprimiert sendet.
Es besteht auch die Möglichkeit, vor dem Senden des Requests die notwendigen Anmeldedaten durch Verwendung der AUTHENTICATE()-Methode des Interfaces IF_HTTP_CLIENT einzugeben.
Nun wird der Request versendet:
Ende des Codes |
Hier muss wieder mit client->get_last_error der letzte Fehler abgefragt werden.
Nun wird die Antwort empfangen, die Responsedaten in das Client-Objekt gefüllt.
Ende des Codes |
Auch hier müssen wieder Exceptions und Fehlerabfragen eingefügt werden.
Wenn die Verbindung nicht mehr verwendet wird, muss sowohl das Client-Objekt als auch die Verbindung abgebaut werden:
Ende des Codes |
Um den erfolgreichen Test zu dokumentieren, wird nun die Ausgaberoutine aufgerufen.
Ende des Codes |