http-Adapter Receive-Interaktion Möglichkeit tag content direkt auszugeben

  • Beitrag
    vikl
    Teilnehmer
    Hallo,

    wenn ich den http Adapter synchron nutzen will um ggf. individuelle http-Payload Antworten zu erstellen, finde ich nur die Möglichkeit eines folgenden Antwortaufbaus (hier in JSON):

    {"tc:RESPONSE": {
    "tc:processSync_Resp": {
    "tc:message": {
    "type": "EventSync",
    "creator": "EventSyncCreator",
    "created": "2020-11-22+010020:21:38",
    "content": {
    "ROOT": {
    "Blub": "blablabla"
    }}}}}}
    Dabei wird der individuelle Teil "content" samt der "tc:RESPONSE" ausgegeben.
    Frage: Könnte man evtl nur den tag "content" inkl. Unterbaum  als Payload definieren?
    • Dieses Thema wurde geändert vor 3 Jahren, 4 Monaten von vikl.

    0
    0
Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Antworten
    vikl
    Teilnehmer
    Hat sich wohl erledigt:

    Im Ausgangsmapping per XPath  auf “\\content” suchen/filtern

    0
    0
    Seit TRANSCONENCT 2.3.4 gibt es noch eine andere Möglichkeit. Erstellen Sie einen HTTP-Eingangsadapter vom Verbindungstyp “JSON”. Lassen Sie das Feld “Erfolgsantwort” leer und stellen Sie die Einstellung “Verarbeitung” auf den Wert “Synchron”.

    Im dazu konfigurierten Prozess können Sie mit einer Transformation die JSON-Antwort erzeugen.

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" encoding="UTF-8" omit-xml-declaration="yes" />
    <xsl:template match="/">{
    "Blub": "blablabla"
    }
    </xsl:template>
    </xsl:stylesheet>

    Im Ende-Ereignis des Prozesses wählen Sie dann das Ergebnis der Transformation als Ergebnis aus.

    Ihr TRANSCONNECT-Team

    0
    0
    vikl
    Teilnehmer
    Ich habe nun versucht den neuen Mechanismus der Version 2.3.4 anzuwenden und wollte in der Transformation für die Ende/Ergebnis Nachricht die http-Header wie folgt setzen:

    <xsl:param name=”HTTPStatusCode” />
    <xsl:param name=”HTTPHeaderFields” />
    <xsl:template match=”/”>
    <xsl:value-of
    select=”java:put( $HTTPHeaderFields, ‘Content-Disposition’,’attachment;filename=123.pdf’ )” />
    <xsl:value-of
    select=”java:put( $HTTPHeaderFields, ‘Content-Type’, ‘application/pdf’ )” />

    Dieses führt bei der Ausführung jedoch zum Fehler:
    com.sqlgmbh.tc.processing.ProcessException: error transforming message: error transforming message: terminated due to an error: java.lang.NoSuchMethodException: For extension function, could not find method java.lang.String.put([ExpressionContext,] #STRING, #STRING).: For extension function, could not find method java.lang.String.put([ExpressionContext,] #STRING, #STRING).

    0
    0
    Markus Franke
    Administrator
    Der von ihnen verwendete Mechanismus zum Überschreiben der HTTP Response Header Felder funktioniert nur für den Verbindungstyp “Default” und muss in der Transformation die beim Ausgangsmapping des Adapters angegeben wird spezifiert werden.

    Für den bei ihnen verwendeten Verbindungstyp “JSON” ist der HTTP Response Code immer auf 200 und der Content-Type auf “application/json” festgesetzt.

    Das Überschreiben dieser Felder in der Transformation im Prozess für die Ende/Ergebnis Nachricht ist damit aktuell nicht möglich.

    0
    0
Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.