HttpRequest

Port: B2B

Beschreibung

Mit diesem Service kann ein HTTP-Request abgesetzt werden. Achtung: Dieser Service soll nur mit Bedacht aufgerufen werden, da die Ausführung in der Regel relativ lange dauert im Vergleich mit einem Zugriff auf OpaccERP-eigene Daten.

Argumente

Nr.
ParameterId
Beschreibung
DatenTyp
1
partnerId
PartnerId: Welcher Partner soll adressiert werden? Muss in "Opacc.B2B.HttpRequest.xml" konfiguriert sein. Wenn leer, dann dynamisch anhand der übrigen Argumente (gewisse Features wie zum Beispiel "Authentication") können dann nicht benutzt werden.
0 - String
2
method
Methode (üblicherweise "POST" oder "GET", wenn leer, dann gemäss Partner-Konfiguration)
0 - String
3
endpointUrl
Endpunkt-URL (muss mit "http" oder "https" beginnen, wenn leer, dann gemäss Partner-Konfiguration)
0 - String
4
headers
Zum Beispiel "SOAPAction=http://www.opacc.com/Opacc/ServiceBus/Interface/Ws/Generic/Generic/FlatRequest" (mehrere Header müssen durch "NewLine" getrennt übergeben werden, wenn leer, dann gemäss Partner-Konfiguration)
0 - String
5
contentType
Zum Beispiel "text/xml" (wenn leer, dann gemäss Partner-Konfiguration)
0 - String
6
contentBody
Zum Beispiel "text/xml" (wenn leer, dann gemäss Partner-Konfiguration)
0 - String
7
parameters
Falls vorhanden, werden die Parameter-Platzhalter (%i) in Body entsprechend ersetzt. Die Reihenfolge ist entscheidend: Erster Parameter hat Index 1
101 - String[]
8
responseBodyMode
Definiert wie der Response-Body zurückgegeben werden soll
3 - HttpBodyMode
9
responseBodyTmpFileName
Name des tmp-Files in welches der Response-Body geschrieben werden soll (nur relevant im entsprechenden Mode)
0 - String
10
responseBodyTmpFileEncoding
Encoding, in welchem Datei für Response-Body gespeichert werden soll (nur relevant im entsprechenden Mode)
3 - HttpBodyFileEncoding
11
requestBodyMode
Definiert wie der Request-Body übergeben wird (wenn Übergabe via Tmp-File erfolgen soll, muss der Name des Tmp-Files in "contentBody" angegeben werden).
3 - HttpBodyMode
12
requestBodyTmpFileEncoding
Encoding, in welchem die Datei für den "Request-Body" gespeichert ist (nur relevant im entsprechenden Mode).
3 - HttpBodyFileEncoding

Rückgabewerte

Nr.
ParameterId
Beschreibung
DatenTyp
1
ContentBody
Empfangener Content-Body
0 - String
2
ContentType
Empfangener Content-Type
0 - String
3
Headers
Empfangene Headers (jeweils pro Header eine Zeile)
0 - String
4
StatusCode
Empfangener Status-Code. Details dazu siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
2 - Number
5
StatusText
Empfangener Status-Text (erste Zeile der Response)
0 - String

Beispiel 1:

Voraussetzung für den Einsatz von B2B.HttpRequest ist eine korrekte Konfiguration. (z.B. \insyde\ServiceBus\Config\Data\Opacc.B2B.HttpRequest.xml\001…) Diese Konfiguration kann auch leer sein. Voraussetzung ist somit ein leeres (Default-) Template. Die Konfiguration ist abhängig vom Endpunkt und kann an dieser Stelle nicht endgültig beschrieben werden. Beispiel einer solchen xml-Konfigurationsdatei:
Hinweis zu TimeoutInSeconds = 0: Der Default-Wert 0 bedeutet nicht unendlich, sondern 30 Sekunden.
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Opacc.B2B.HttpRequest.xsd">
<! -- BEISPIEL mit Basic-Authentification -->
  <Partner>
    <PartnerId>BasicAuthenticationTest</PartnerId>
    <Activated>1</Activated>
    <Description></Description>
    <Method>GET</Method>
    <EndpointUrl>https://httpbin.org/basic-auth/MyUser/MyPassword</EndpointUrl>
    <Headers></Headers>
    <ContentType></ContentType>
    <ContentBody></ContentBody>
    <SuppressErrorForNon200Status>0</SuppressErrorForNon200Status>
    <TimeoutInSeconds>0</TimeoutInSeconds>
    <AuthenticationType>UserPassword</AuthenticationType>
    <UserName>MyUser</UserName>
    <EncryptedPassword>024okAHeLg3b49BahD5HSHdpw==i6XeJoai08drxgbS/q0QBw==</EncryptedPassword>
    <ClientCertAsBase64></ClientCertAsBase64>
  </Partner>
<! -- BEISPIEL Login für Jira über REST API -->
  <Partner>
    <PartnerId>jira</PartnerId>
    <Activated>1</Activated>
    <Description></Description>
    <Method>GET</Method>
    <EndpointUrl>https://jira.meine.firma/rest/api/2/issue/ISSUE-1493?fields=key,status,resolution,priority,fixVersions</EndpointUrl>
    <Headers></Headers>
    <ContentType>application/json</ContentType>
    <ContentBody></ContentBody>
    <SuppressErrorForNon200Status>0</SuppressErrorForNon200Status>
    <TimeoutInSeconds>0</TimeoutInSeconds>
    <AuthenticationType>UserPasswordBasicAuth</AuthenticationType>
    <UserName>myUserName</UserName>
    <EncryptedPassword>myEncryptedPassword</EncryptedPassword>
    <ClientCertAsBase64></ClientCertAsBase64>
  </Partner>
</Settings>
Eine weitere Voraussetzung ist das Eintragen/Aktivieren des ServiceBus-Plugin in der Konfigurationsdatei OpaccOneInstallation.xml. Auszug aus OpaccOneInstallation.xml:
<ServiceBusPlugin>
  <Name>Opacc.ServiceBus.Connector.B2B.Plugin</Name>
  <Activated>true</Activated>
  <Autostart>true</Autostart>
</ServiceBusPlugin>
Die hier aufgeführten Beispiel-Requests können Sie kopieren und in der OpaccOXAS LiveDocumentation ausführen. Zugriff auf JIRA-Issues (Partner-ID notwendig):
B2B.HttpRequest
jira

https://jira.meine.firma/rest/api/2/issue/ISSUE-1493?fields=key,status,resolution,priority,fixVersions




0

0
0
0
Laden einer Google-Map (keine Partner-ID notwendig):
B2B.HttpRequest

GET
http://maps.googleapis.com/maps/api/staticmap?center=Opacc+Software+AG&zoom=15&size=400x400&markers=color:orange|label:O|47.0237283,8.2970548&maptype=hybrid&format=png




1
GoogleMap.png
3
0
0
Dasselbe Beispiel in F-Script:
«XSER(reqHttpRequest:B2B.HttpRequest)»
«XSER(reqHttpRequest:addArg=)»
«XSER(reqHttpRequest:addArg=GET)»
«XSER(reqHttpRequest:addArg=http://maps.googleapis.com/maps/api/staticmap?place=Opacc+Software+AG?center=47.0237283,8.2970548&zoom=15&size=400x400&markers=color:orange%7C47.0237283,8.2970548&sensor=false&format=png)»
«XSER(reqHttpRequest:addArg=)»
«XSER(reqHttpRequest:addArg=)»
«XSER(reqHttpRequest:addArg=)»
«XSER(reqHttpRequest:addArg=)»
«XSER(reqHttpRequest:addArg=1)»
«XSER(reqHttpRequest:addArg=GoogleMap.png)»
«XSER(reqHttpRequest:addArg=3)»
«XSER(reqHttpRequest:addArg=0)»
«XSER(reqHttpRequest:addArg=0)»
«nXSER(reqHttpRequest:execute>resHttpRequest)\A»

Beispiel 2:

Beispiel von aufeinander aufbauenden Requests. Der erste Request liefert ein Token zurück welches im Header des zweiten Requests verwendet wird. Erster Request (liefert Token).
B2B.HttpRequest

POST
https://wedecint.post.ch/WEDECOAuth/token?grant_type=client_credentials&client_id=73f6e44e289d3e2fa1957390297b7348&client_secret=9db6b6acea538020cf7a10a8c9116e9a&scope=WEDEC_VALIDATE_ADDRESS,WEDEC_AUTOCOMPLETE_ADDRESS

application/x-www-form-urlencoded

0
RESULT.XML
0
0
0
Zweiter Request (Token wird in Header verwendet). Das Token (hier im Beispiel mit XXXXXX dargestellt, wird im Header übergeben.
B2B.HttpRequest

POST
https://wedecint.post.ch/api/address/v1/addresses/validation
Authorization: Bearer XXXXXX
application/json
{"addressee":{"firstName":"","lastName":"","title":"MISTER"},"geographicLocation":{"house":{"street":"Serafino Balestra","houseNumber":"20"},"zip":{"zip":"6600","city":"Locarno"}}}

0
RESULT.XML
0
0
0