http(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)


Führt HTTP-Requests mit den HTTP-Methoden GET, POST, DELETE oder PUT aus und gibt als Rückgabewert den HTTP-Status zurück. Request-Header können gesetzt werden.

Die Response-Daten und -Header können in einer Map und einer Datei gespeichert werden.

Parameterbeschreibung


Parameter

Beschreibung

a

URL ohne Query.

b

(optional) true für Ausführung via DMZ. Default: false

c

Query.

d

Body-Daten (nicht für GET, HEAD, DELETE).

Hinweis: Siehe auch Abschnitt Multipart-Requests.

e

(optional) Zeichensatz. Default: Der System-Zeichensatz.

f

MIME-Type (für PUT/POST/PATCH).

Hinweis: Siehe auch Abschnitt Multipart-Requests.

Hinweis: Wenn Sie POST verwenden, dann wird im Header Content Type per Default der MIME-Type und das Charset (siehe Parameter e) angegeben. Wollen Sie nur den MIME-Type haben, können Sie den Suffix ;raw verwenden, also z. B. text/plain;raw Hinweis: Funktioniert nicht bei multipart/form-data. Siehe auch Abschnitt Multipart-Requests.

g

Die zu verwendende HTTP-Methode. Verwenden Sie zur Auswahl eines Wertes die drei Punkte.

h

(optional) HTTP-Kanal-ID (nur bei Authentifizierung) oder leer. Als Benutzer wird der Wert des Feldes "Eigene Kennung" verwendet und als Passwort der Wert des Feldes "Eigenes Kennwort".

i

(optional) Zertifikats-ID (falls benötigt) oder leer.

j

(optional) Timeout in Sekunden. Default: 90

k

(optional) Anzahl an Versuchen (Retries). Default: 0. Hinweis: Diese Einstellung greift nur, wenn kein Statuscode zurück geliefert wird. Kommt ein Statuscode 4xx oder 5xx zurück, wird kein Retry ausgelöst. In diesem Fall muss ein manuelles Fehler-Handling implementiert werden.

l

(optional) Name einer Map, in die die Response-Header und Response-Daten gespeichert werden sollen → Siehe Abschnitt HTTP-Response-Header und Daten für Details.

Es ist auch möglich Request-Header zu einem Aufruf hinzuzufügen → Siehe Abschnitt HTTP-Request-Header für Details.

m

(optional) true leert die Map l vor dem Befüllen. Default: false

n

(optional) Pfad und Name einer Datei, in die die Response-Daten gespeichert werden sollen → Siehe Abschnitt HTTP-Response-Header und Daten für Details.

o

(optional) Falls true, dann werden die Werte Base64-kodiert in die Map geschrieben. Falls false, dann wird das Encoding aus Parameter e verwendet. Default: false

p

(optional, nur relevant für Multipart) Der Multipart Mode, siehe Abschnitt Multipart-Requests. Erlaubte Werte: STRICT, RFC6532, COMPATIBLE, SYSTEM. Default: SYSTEM

Header: STRICT ( Content-Disposition , Content-Type , Content-Transfer-Encoding ), RFC6532 ( Content-Disposition , Content-Type , Content-Transfer-Encoding ), COMPATIBLE (nur Content-Disposition und zusätzlich Content-Type bei einem Datei-Part).

Der Mode bei der Verwendung des Wertes SYSTEM wird bestimmt durch die System-Property -Dhub.datawizard.multipart.browserMode. Bei -Dhub.datawizard.multipart.browserMode=true gilt COMPATIBLE. Ist die Property nicht gesetzt oder auf false, dann gilt STRICT.

Multipart-Requests


Geben Sie in Parameter f den Wert multipart/form-data an. Erlaubte Methoden in g sind POST, PUT und PATCH. Ist eine falsche Methode eingestellt, dann wird im Request automatisch auf POST umgestellt.

Parameter d wird dann als Map-Name ausgewertet. Die Map muss dann die einzelnen Part/Datei-Parts enthalten. Parameter p erlaubt das Setzen des Multipart Modes.

Normaler Part

Einen normalen Part erzeugen Sie, indem Sie als Schlüssel des Map-Eintrags den Namen des Parts angeben und als Wert des Map-Eintrags den Inhalt des Parts.


Header bei STRICT und RFC6532 (siehe Parameter p):

Content-Type: text/plain; charset=<Parameter e>

Content-Transfer-Encoding: 8bit

Hinweis: Die Header-Werte sind hier, bis auf Parameter e, fest vorgegeben.

Datei-Part


Verwenden Sie für einen Datei-Part für den Schlüssel die folgende Syntax.

file:<Schlüssel-Name des Datei-Parts>:<Dateiname>[:<Content-Type und optionales Content-Transfer-Encoding mit Suffix #, siehe Beispiel>]

Der Wert zu solch einem Schlüssel ist entweder

file:<Pfad zur Datei>

oder der tatsächliche Inhalt der Datei.


Header bei STRICT und RFC6532 (siehe Parameter p):

Content-Type: application/octet-stream oder optionaler Content-Type, wenn ein Datei-Pfad angegeben wurde und application/octet-stream; charset=<Parameter e>, wenn der tatsächliche Inhalt der Datei angegeben wurde, siehe oben und Beispiel.

Content-Transfer-Encoding: binary oder optionales Content-Transfer-Encoding, siehe oben und Beispiel.


Beispiel:

Schlüssel: file:testfile:phone.pdf:text/plain#7bit

Wert: file:./webapps/root/upload/test.txt

Das erzeugt (bei STRICT und RFC6532) folgende Header:

Content-Type: text/plain
Content-Transfer-Encoding: 7bit


HTTP-Request-Header


Es ist auch möglich Request-Headerwerte zu einem Aufruf hinzuzufügen, indem die unter l angegebene Map vor dem Funktionsaufruf mit Wertepaaren belegt wird. Die Syntax ist hier folgende.


REQUEST_HTTP_HEADER_<Value>


Hinweis: Bitte beachten Sie, dass Großschreibung und Kleinschreibung in <Value> für den Wert übernommen werden. Und das nicht nur in der Map, sondern auch im tatsächlichen HTTP-Request-Header.

Hinweis: Damit sich die Werte der Map aus Aufruf (Request-Header) und Ergebnis (Response-Header) nicht vermischen, kann der Parameter m auf true gestellt werden. Dadurch wird die Map l vor dem Hinzufügen der HTTP Response-Header gelöscht.

Beispiel:

Der HTTP-Request-Header Max-Forwards (begrenzt die Anzahl der möglichen Weiterleitungen durch Proxys oder Gateways) soll auf 10 gesetzt werden.


add to map(key a, value b, name of map c, [skip empty d])
a Wert: REQUEST_HTTP_HEADER_Max-Forwards
b Wert: 10
c Wert: map_Result
d Wert:
 
http(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
a Wert: http://example.com
b Wert:
c Wert:
d Wert:
e Wert:
f Wert:
g Wert: GET
h Wert:
i Wert:
j Wert:
k Wert:
l Wert: map_Result
m Wert: true
n Wert:
o Wert:

HTTP-Response-Header und Daten


Die Response des HTTP-Requests kann in eine Map l gespeichert werden. Die Map enthält dann die folgenden Schlüssel mit dazugehörigem Wert.


Schlüssel

Wert

RESPONSE_HTTP_STATUS

Zurückgelieferter HTTP-Status.

RESPONSE_HTTP_STATUSLINE

Zurückgelieferte Statusnachricht.

RESPONSE_HTTP_DATA

Zurückgelieferte Daten.

Wichtiger Hinweis: Soll der Wert für RESPONSE_HTTP_DATA nicht in eine Map, sondern in eine Datei gespeichert werden, da es sich evtl. um ein PDF-Dokument o. ä. handelt (binär), muss die Datei in Parameter n angegeben werden.

RESPONSE_HTTP_HEADER_<...>

Zurückgelieferte Headerfelder der HTTP-Antwort. Zum Beispiel RESPONSE_HTTP_HEADER_CONTENT-TYPE für HTTP-Response-Header Content-Type.

Zudem können die zurück gelieferten Daten (nicht die Response-Header) in eine Datei n gespeichert werden. Folgend eine Übersicht aller Kombinationsmöglichkeiten.

Benutzte Parameter

Gespeicherte Daten

Nur Map l

Die Map enthält die Response-Header und die zurück gelieferten Daten (als Wert des Schlüssels RESPONSE_HTTP_DATA).

Nur Datei n

Die Datei enthält nur die zurück gelieferten Daten (aber keine Response-Header).

Map l und Datei n

Die Map enthält nur die Response-Header (aber nicht den Schlüssel RESPONSE_HTTP_DATA). Die Datei enthält nur die zurück gelieferten Daten (aber keine Response-Header).

Raw Request/Response


Wenn Sie bei Verwendung der HTTP-Methode POST (speziell bei Multipart) den Raw Request und die Raw Response (und die jeweiligen Header) zu Testzwecken sehen möchten, finden Sie diese in der Log-Übersicht als Base64-kodierten String, wenn Sie die Trace-Meldungen für Phase 3 in der Logging-Konfiguration aktivieren. Dekodieren können Sie diesen mit dem Plugin Enkodierer/Dekodierer. Alternativ können Sie natürlich auch externe Tools wie z. B. https://requestcatcher.com/ verwenden.

Beispiele


Hinweis: Der komplette Request-String im ersten Beispiel ist http://maps.googleapis.com/maps/api/geocode/xml?address=82343+Hindenburgstra%C3%9Fe+15. Der Teil vor dem ? ist im Parameter a anzugeben. Der Teil hinter dem ? ist im Parameter c anzugeben.


Parameter a

http://maps.googleapis.com/maps/api/geocode/xml

http://www.lobster.de/img/150402_edm_data.jpg

http://httpbin.org/post

Parameter b




Parameter c

address=82343+Hindenburgstra%C3%9Fe+15


custname=Lobster&delivery=18:00

Parameter d




Parameter e




Parameter f



application/x-www-form-urlencoded

Parameter g

GET

GET

POST

Parameter h




Parameter i




Parameter j


180


Parameter k



2

Parameter l

map_Result_1

map_Result_2

map_Result_3

Parameter m

true

true

true

Parameter n


./temp/http/picture/logo.jpg


Parameter o




Ergebnis

200

200

200

map_Result_1
'RESPONSE_HTTP_HEADER_ACCEPT-RANGES'='none'
'RESPONSE_HTTP_HEADER_CONTENT-TYPE'='application/xml; charset=UTF-8'
'RESPONSE_HTTP_HEADER_TRANSFER-ENCODING'='chunked'
'RESPONSE_HTTP_HEADER_X-XSS-PROTECTION'='1; mode=block'
'RESPONSE_HTTP_HEADER_SERVER'='mafe'
'RESPONSE_HTTP_HEADER_ALTERNATE-PROTOCOL'='80:quic,p=0'
'RESPONSE_HTTP_HEADER_ACCESS-CONTROL-ALLOW-ORIGIN'='*'
'RESPONSE_HTTP_HEADER_VARY'='Accept-Language,Accept-Encoding'
'RESPONSE_HTTP_STATUS'='200'
'RESPONSE_HTTP_DATA'='<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>street_address</type>
<formatted_address>1600 Amphitheatre Parkway, Mountain View, CA 94043, USA</formatted_address>
<address_component>
<long_name>1600</long_name>
<short_name>1600</short_name>
<type>street_number</type>
</address_component>
.
.
.
<geometry>
<location>
<lat>37.4224553</lat>
<lng>-122.0843062</lng>
</location>
<location_type>ROOFTOP</location_type>
<viewport>
<southwest>
<lat>37.4211063</lat>
<lng>-122.0856552</lng>
</southwest>
<northeast>
<lat>37.4238043</lat>
<lng>-122.0829572</lng>
</northeast>
</viewport>
</geometry>
<place_id>ChIJ2eUgeAK6j4ARbn5u_wAGqWA</place_id>
</result>
</GeocodeResponse>
'
'RESPONSE_HTTP_HEADER_X-FRAME-OPTIONS'='SAMEORIGIN'
'RESPONSE_HTTP_STATUSLINE'='OK'
'RESPONSE_HTTP_HEADER_EXPIRES'='Thu, 28 May 2015 06:58:53 GMT'
'RESPONSE_HTTP_HEADER_DATE'='Wed, 27 May 2015 06:58:53 GMT'
'RESPONSE_HTTP_HEADER_CACHE-CONTROL'='public, max-age=86400'

map_Result_2
'RESPONSE_HTTP_HEADER_CONTENT-TYPE'='image/jpeg'
'RESPONSE_HTTP_HEADER_ACCEPT-RANGES'='bytes'
'RESPONSE_HTTP_HEADER_VARY'='Accept-Encoding'
'RESPONSE_HTTP_HEADER_SERVER'='Apache'
'RESPONSE_HTTP_HEADER_LAST-MODIFIED'='Thu, 02 Apr 2015 08:04:18 GMT'
'RESPONSE_HTTP_STATUS'='200'
'RESPONSE_HTTP_HEADER_KEEP-ALIVE'='timeout=15, max=100'
'RESPONSE_HTTP_STATUSLINE'='OK'
'RESPONSE_HTTP_HEADER_ETAG'='"1b53-512b9474c8480"'
'RESPONSE_HTTP_HEADER_DATE'='Wed, 27 May 2015 07:38:18 GMT'
'RESPONSE_HTTP_HEADER_CONNECTION'='Keep-Alive'
'RESPONSE_HTTP_HEADER_CONTENT-LENGTH'='6995'

map_Result_3
'RESPONSE_HTTP_HEADER_CONTENT-TYPE'='application/json'
'RESPONSE_HTTP_HEADER_ACCESS-CONTROL-ALLOW-CREDENTIALS'='true'
'RESPONSE_HTTP_HEADER_SERVER'='nginx'
'RESPONSE_HTTP_STATUS'='200'
'RESPONSE_HTTP_DATA'='{
"args": {
"custname": "Lobster",
"delivery": "18:00"
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept-Encoding": "gzip,deflate",
"Cache-Control": "no-cache",
"Content-Length": "0",
"Content-Type": "application/x-www-form-urlencoded; charset=ISO-8859-1",
"Host": "httpbin.org",
"User-Agent": "Lobster"
},
"json": null,
"url": "http://httpbin.org/post?custname=Losbter&delivery=18:00"
}
'
'RESPONSE_HTTP_STATUSLINE'='OK'
'RESPONSE_HTTP_HEADER_ACCESS-CONTROL-ALLOW-ORIGIN'='*'
'RESPONSE_HTTP_HEADER_DATE'='Wed, 27 May 2015 07:50:30 GMT'
'RESPONSE_HTTP_HEADER_CONNECTION'='keep-alive'
'RESPONSE_HTTP_HEADER_CONTENT-LENGTH'='500'