Allgemeines

Die HTTP-Schnittstelle stellt folgende Dienste bereit:

 DienstBeschreibung 

connect

Führt den Anmeldevorgang durch.

call

Ruft ein beliebiges oxaion-Programm auf.

report

Ruft einen oxaion-Report ab.

disconnect

Meldet die aktuelle Sitzung ab.

setDisposableSetzt die Property HTTP-CONNECTOR-DISPOSABLE=true


Anmeldevorgang (connect)

Beispiel-Aufruf:
http://hostname/app-tunnel/connect?user=INETUSER&pwd=xxx&host=oxaion
Parameter 
ParameterBeschreibung
hostnameName/IP des Servers (wird beim Kunden einmalig festgelegt)
connectBefehl zur Anmeldung
userBenutzername System i (= bei oxaion open Benutzername System-Profil)
pwd oder md5pwd

oxaion business solution: Passwort System i

oxaion open: Passwort der Benutzerverwaltung; Alternativ kann das Passwort als MD5-Hash übergeben werden

hostName der oxaion-Umgebung (wird beim Kunden einmalig festgelegt)
siehe Installation der HTTP-Schnittstelle
Parameter optional 
ParameterBeschreibung
profileoxaion-Profil, falls kein Standard-Profil existiert
firmFirma (=Mandant), falls im Profil keine Standard-Firma hinterlegt ist
sessionTimeoutDauer der Session (Dauer kann durch die Angabe lediglich verkürzt werden)
disposableWird dieser Parameter auf "true" gesetzt, dann kann die ID genau einmal verwendet werden. D.h. mit den nächsten Programmaufruf (call) erfolgt gleichzeitig eine Abmeldung.
Rückgabe 
<ID>13032933474483</ID> 

 Unter dieser ID wird die aktuelle Benutzer-Anmeldung geführt. Diese ID muss bei allen zukünftigen Server-Calls mitgegeben werden.

Aufruf eines oxaion-Programmes (call)

Beispiel-Aufruf
http://hostname/app-tunnel/call?user=13032933474483&pgmn=US10100J&akto=*READ&LALANR=003
Parameter 
ParameterBeschreibung
hostnameName/IP des Servers (wird beim Kunden einmalig festgelegt)
callBefehl zum Programmaufruf 
user Benutzer-ID aus dem Anmeldevorgang 
pgmn Programmname des oxaion-Programmes
aktoFunktion des oxaion-Programmes  

Zusätzlich können dem call-Befehl beliebig viele Input-Parameter übergeben werden. Diese Parameter sind abhängig von dem jeweiligen oxaion-Programm.

Für das US10100J/*READ wird z. B. der Parameter &LALANR=003 benötigt

Rückgabe 

Der Befehl gibt den XML-Datenstrom des oxaion-Programmes zurück. Die XML-Struktur sowie die Inhalte sind abhängig vom jeweiligen oxaion-Programm. In Datenrückgabe eines oxaion Programmes sind die möglichen XML-Strukturen dokumentiert.

Bspw. liefert das US10100J/*READ folgende Rückgabe:

<?xml version="1.0" encoding="UTF-8" ?> 
<PARM> 
	<DTA> 
		<LALCDA>HOL</LALCDA> 
		<LAASBZ>7</LAASBZ> 
		<TX_XSPR>Niederländisch</TX_XSPR> 
		<LAASBK>10</LAASBK> 
		<LAIBRL>E</LAIBRL> 
		<LAKPLZ>N</LAKPLZ> 
		<LAPLNM>N</LAPLNM> 
		<LAYLAE>2010-11-07</LAYLAE> 
		<LADCTZ>.</LADCTZ> 
		<LALNAM>Niederlande</LALNAM> 
	</DTA> 
	<ATR /> 
</PARM>

Anmeldung und Aufrufe mit BasicAuth

Für oxaion open ab Version 2021.5306.1 ist es alternativ möglich, die Anmeldung mit BasicAuth durchzuführen.

Dabei erfolgt das Login nicht separat durch /connect, sondern integriert mit /call.
Die Anmeldeinformationen werden dafür im Request-Header übergeben.
In der Anwort der HTTP-Schnittstelle wird ein Cookie mitgeliefert, worüber nach der Anmeldung weitere Aufrufe möglich sind.
Die Abmeldung erfolgt analog wie beschrieben für /disconnect.

Beispiel-Aufruf:
http://hostname/app-tunnel/call?pgmn=US10100J&akto=*READ&LALANR=003
Parameter 
ParameterBeschreibung
hostnameName/IP des Servers (wird beim Kunden einmalig festgelegt)
callBefehl zum Programmaufruf 
hostName der oxaion-Umgebung (wird beim Kunden einmalig festgelegt)
siehe Installation der HTTP-Schnittstelle
Parameter
im Header
HeaderBeschreibung
AuthorizationBasic Authentication mit Nutzer und Kennwort
oxaion-hostName der oxaion-Umgebung (wird beim Kunden einmalig festgelegt)
siehe Installation der HTTP-Schnittstelle
Parameter optional 
im Header
ParameterBeschreibung
oxaion-loginAnmeldeverfahren: LDAP oder DIGEST_MD5
oxaion-profileoxaion-Profil, falls kein Standard-Profil existiert
oxaion-firmFirma (=Mandant), falls im Profil keine Standard-Firma hinterlegt ist
oxaion-autologoutWird dieser Parameter auf "true" gesetzt, dann erfolgt direkt nach dem Ausführen des Programmes die Abmeldung.
Rückgabe 

Der Befehl gibt den XML-Datenstrom des oxaion-Programmes zurück. Die XML-Struktur sowie die Inhalte sind abhängig vom jeweiligen oxaion-Programm. In Datenrückgabe eines oxaion Programmes sind die möglichen XML-Strukturen dokumentiert.

Bspw. liefert das US10100J/*READ folgende Rückgabe:

<?xml version="1.0" encoding="UTF-8" ?> 
<PARM> 
	<DTA> 
		<LALCDA>HOL</LALCDA> 
		<LAASBZ>7</LAASBZ> 
		<TX_XSPR>Niederländisch</TX_XSPR> 
		<LAASBK>10</LAASBK> 
		<LAIBRL>E</LAIBRL> 
		<LAKPLZ>N</LAKPLZ> 
		<LAPLNM>N</LAPLNM> 
		<LAYLAE>2010-11-07</LAYLAE> 
		<LADCTZ>.</LADCTZ> 
		<LALNAM>Niederlande</LALNAM> 
	</DTA> 
	<ATR /> 
</PARM>

Abruf eines oxaion Reports (report)

Diese Funktion ist derzeit nur in oxaion open verfügbar. Für oxaion business solution wenden Sie sich bitte an Ihren oxaion Berater.

Beispiel-Aufruf
http://hostname/app-tunnel/report?user=13032933474483&id=25 
Parameter
ParameterBeschreibung
hostnameName/IP des Servers (wird beim Kunden einmalig festgelegt)
reportBefehl zum Abruf eines oxaion Reports 
id ID des abzurufenden Reports (einsehbar über das Programm „IS60200R")  
Rückgabe 

Der Abruf eines Reports stellt insofern eine Ausnahme dar, als dass in diesem Fall keine XML-Daten zurück geliefert werden, sondern der aktuell abgerufene und aufbereitete Report in Form eines HTML-Dokumentes.

Dieses HTML-Dokument kann direkt in einem Browser angezeigt werden. Beispiel-Anzeige über einen iPad-(Safari-)-Browser:

Abmelden (disconnect)

Beispiel-Aufruf
http://hostname/app-tunnel/disconnect?user=13032933474483 
Parameter
ParameterBeschreibung
hostnameName/IP des Servers (wird beim Kunden einmalig festgelegt)
disconnectBefehl zur Abmeldung 
user Benutzer-ID aus dem Anmeldevorgang 
Rückgabe 
<OK/>

Automatisches Abmelden beim nächsten Programmaufruf (setDisposable)

Durch Aufruf dieses Dienstes wird beim nächste Aufruf eines oxaion-Programmes (call) der User automatisch abgemeldet.

Beispiel-Aufruf
http://hostname/app-tunnel/setDisposable?user=13032933474483 
Parameter
ParameterBeschreibung
hostnameName/IP des Servers (wird beim Kunden einmalig festgelegt)
setDisposableBefehl zur Abmeldung 
user Benutzer-ID aus dem Anmeldevorgang 
Rückgabe 
<OK/>

System-Fehler

Fachliche Fehler eines oxaion-Programmes (bspw. Preis nicht gefunden) werden wie im Abschnitt Fehler beschrieben zurück geliefert.

Technische Fehler werden wie folgt zurück geliefert:

<ERROR ID="TUN0001">
	<![CDATA[ 
		CODE: TUN0001INFO: 20.04.2016 12:23:47 csoxe01.cmd-intern.de
		SHORT: Authentifizierung fehlerhaft
		LONG: Authentifizierung fehlerhaftcom.oxaion.jet.server.jetty.tunnel.ConnectHandler.getUser(ConnectHandler.javacom.oxaion.jet.server.jetty.tunnel.CallHandler.handle(CallHandler.java:41)
		org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java)]]/> 
</ERROR>

Auswahl des Rückgabeformats

Das Rückgabeformat ist normalerweise XML. Es besteht allerdings auch die Möglichkeit das Rückgabeformat zu beeinflussen.

JSON

Um die Daten als JSON anstatt XML zu erhalten, muss an den http-Request der Parameter

responseFormat=json

angehängt werden. Dieser Parameter muss an jeden Request angehängt werden, ansonsten wechselt das Rückgabeformat wieder auf XML.

Wenn das Rückgabeformat JSON ist, kann durch den zusätzlichen Parameter

prettyPrint=true

die JSON-Rückgabe mit Zeilenumbrüchen und Einrückungen versehen werden, damit sie besser gelesen werden kann. Dies ist vor allem zum Entwicklungszeitpunkt sinnvoll. Danach sollte man diese Funktion nicht nutzen, da sie nur zusätzliches Datenaufkommen produziert.

Javascript-Callback (JSONP)

Wenn die http-Schnittstelle direkt per Javascript aus einer Webseite aufgerufen werden soll, welche nicht unter dem gleichen Hostnamen läuft, blockiert der Webbrowser normalerweise sämtliche Ajax-Requests auf andere Hosts und dadurch auch auf die oxaion http-Schnittstelle. Um diese Problematik zu umgehen, kann eine Callback-Methode verwendet werden. Dazu sendet der Aufrufer der http-Schnittstelle den Namen einer Callback-Methode mit. Die http-Schnittstelle liefert dann eine Javascript-Datei zurück, welche nichts anderes macht, als die Methode mit diesem Namen aufzurufen und dort die Daten als Parameter zu übergeben.

Für die Angabe des Namens der Callback-Methode wird der Parameter

callback

verwendet.

Dieses Rückgabeformat funktioniert sowohl mit JSON, also auch mit XML-Daten. JSON-Daten werden als JSON-Objekt übergeben. XML-Daten werden als String übergeben.

Aufruf per HTTP-POST

Bei Aufrufen einiger Programme kann es vorkommen, dass aufgrund der Anzahl oder Länge der Parameter die maximal erlaubte Länge von URLs überschritte wird, wenn der Aufruf wie oben beschrieben per HTTP-GET durchgeführt wird. In diesem Fall wird die Anfrage mit dem Fehler "414 uri too long" abgelehnt. Dies kann vermieden werden, wenn die Anfrage stattdessen per HTTP-POST durchgeführt wird. Dies bedeutet, dass eine GET-Anfrage in der Form

http://hostname/app-tunnel/call?user=13032933474483&pgmn=US10100J&akto=*READ&LALANR=003

in eine POST-Anfrage an die URL

http://hostname/app-tunnel/call

mit folgenden Daten im Body ausgetauscht wird.

user=13032933474483&pgmn=US10100J&akto=*READ&LALANR=003

Hierbei muss dann im HTTP-Header der Parameter "Content-Type" mit dem Wert "application/x-www-form-urlencoded" mitgegeben werden.

Zentrale Schlüsselwerte

Bei Prozessen, die sich über mehrere call-Aufrufe der HTTP-Schnittstelle ziehen, werden beim ersten Aufruf auf Seiten des Servers ggf. Daten im Hauppeicher gehalten, die erst mit den nachfolgenden Aufrufen verarbeitet werden. Damit der Server diese Daten dem aktuellen Prozess zuordnen kann, gibt es mehrere IDs und Schlüsselwerte , die je nach Prozess relevant sein können.

Session-ID

Dies ist die von der login-Methode zurückgegebene ID. Sie wird in allen weiteren Aufrufen als Parameter "user" mitgegeben. Alle Daten, die im Hauptspeicher vorgehalten werden, werden mit dem Abmelden der Sitzung (sowohl direkt als auch über den Auto-Disconnect) entfernt. Es sollte generell sichergestellt werden, dass keine zwei Zugriffe mit der gleichen Session-ID über die HTTP-Schnittstelle erfolgen, da nicht alle Prozesse auf den Parallelbetrieb mit der selben Anmeldung ausgelegt sind.

Aktivierungsgruppe

Über den oxaion-Client können mehrere Programme parallel geöffnet werden, die dann in getrennten Laschen angezeigt werden. Diese Laschen haben jeweils eine sogenannte Aktivierungsgruppe, die bei Zugriffen als Schlüssel für die Daten im Haupspeicher genommen wird. Diese ID kann über die HTTP-Schnittstelle als Parameter actg mitgegeben, als Standard wird der Wert "DEFAULT_ACTG" genommen. Solange die Aktivierungsgruppe innerhalb einer Prozessausführung konsistent ist, können hier beliebige IDs vom Aufrufer mitgegeben werden.

SSID

Damit es möglich ist, eine Auflistung mit einem bestimmten Filter in einer neuen Lasche zu öffnen, sind die Daten der Listpgrogramme innerhalb einer Session nicht über die Aktivierungsgruppe gespeichert. Stattdessen gibt es eine sogenannte SSID, hinter der z.B. der aktuelle Filter oder der aktuell gelesene SQL gespeichert werden. Alle Transaktionen, die auf einem Listprogramm agieren, müssen somit eine SSID übergeben bekommen. Die SSID muss dabei von einem vorherigem Aufruf vom Server generiert und zurückgegeben werden.

Keytype

Bei Transaktionen, die aus einem Explorer heraus aufgerufen werden, wird im Feld KEYTYPE immer der Name des Knotens mitgegeben, auf dem die Transaktion aufgerufen wird. Z.B. ist das VAKOPF für den VKS-Auftragskopf und VAMPOS für die Auftragspositionen. Stößt man diese Prozesse über die HTTP-Schnittstelle an, müssen auch hier immer der jeweilige KEYTYPE mitgegeben werden. Der Keytype eines Explorerknoten lässt sich ermitteln, indem man mit gedrückter Alt-Taste einen Rechtsklick auf den jeweiligen Knoten macht und die Option "Feldinformationen anzeigen" auswählt.

  • Keine Stichwörter