2016-04-22 4 views
1

Szenario: Mein Dienst ruft einen anderen Ruhe-Service mehrmals basierend auf einer Anzahl. Ich verwende Ereignissenkenaktion in datapower.So extrahieren Sie mehrere JSON-Antwort nach Ereignissenke in Datapower

Ich bin in der Lage, den anderen Dienst mehrere Male auszulösen, und es antwortete zurück. Aber ich bin nicht in der Lage, die Antwort (JSON) in den folgenden XSL Mehrere Kontextvariablen zu erfassen erstellt wurden:

var://context/URLOUTPUT_1, var://context/URLOUTPUT_2/ 

Wie extrahieren ich die JSON response von Kontextvariablen. Der Service, den ich anrufe, ist ein Ruhe-Service mit JSON request and response

Wie kann ich JSON response für jeden Anruf nach event-sink extrahieren? Wo wird die Antwort JSON body gespeichert?

Antwort

0

Ich bin mir nicht sicher, ob ich zu 100% folge, aber wie machst du die Auslösung für den anderen Dienst?

Zuerst, wenn Sie auf FW 7+ sind, dann überlegen Sie, GatewayScript (GWS ~ Node.js) zu verwenden!

Wenn Sie die Ergebnisaktion verwenden, sollten Sie die Antwort (Server zu Client) -Regel für jede Anforderung ausführen.

Sonst müssten Sie es in eine "Schleife" durch Aufruf einer Vorlage für jede Anfrage (Trigger) und dann in der URL-Open() würden Sie die Antwort für jede Anfrage bekommen.

Wenn Sie GWS verwenden, wäre es dasselbe, aber stattdessen in JavaScript, erstellen Sie eine Schleife, rufen Sie für jedes Ereignis url-open auf und holen Sie die Antwort für jeden Aufruf.

+0

ich Aufruf bin mit Ergebnis Aktion ist Aufruf asynchron. Also wenn ich mehrere Ausgänge als NO halte. Ich bin in der Lage, den Inhalt im Kontext innerhalb der Probe (letzte ausgelöste Antwort) zu sehen. Aber wenn ich mehrere Ausgaben als JA halte. Ich konnte den Inhalt in Probe nicht sehen, aber zwei (basierend auf Anfrage) Kontextvariablen sind definiert. Im Grunde suche ich nach irgendeinem xsl, das die Antwort (JSON) von diesen erzeugten Kontextvariablen extrahieren kann. –

+0

OK, da dies asynchron ist, wird es tatsächlich zu separaten Transaktionen und somit nicht in der Sonde abgerufen. Müssen Sie die Ergebnisaktion verwenden oder können Sie stattdessen alle Anfragen von einer XSLT-Transformationsaktion ausführen? – Anders

+0

Ich werde die anderen beiden Möglichkeiten versuchen. Ich habe eine andere Art von gleichen Problem beim Versuch, die Ausgabe nach DPA (XML zu cpy) Aktion zu extrahieren. Die Ausgabe ist im Binärformat. Wie können wir den binären Inhalt extrahieren und im folgenden xsl verwenden?Normalerweise dekodieren wir die Binärdatei mit dem folgenden Code: Aber es hat einen Fehler ausgelöst binary encodieren nicht möglich –

0

Probieren Sie dies als Antwort vor Vorlage übereinstimmen.

_ var: // Kontext/

nun für jeden für den Dienst Variable tun, die Sie erstellt haben.

tun Antwort Transformation in für jeden, wie Sie möchten.

0

Sie können auf den Kontextinhalt zugreifen, als wäre es eine Kontextvariable.

versuchen, etwas wie folgt aus:

<xsl:variable name="json-result"> 
    <xsl:copy-of select="dp:decode(
     dp:binary-encode(
     dp:variable('var://context/URLOUTPUT_1')/node()), 'base-64')"/> 
</xsl:variable> 
Verwandte Themen