2016-04-22 16 views
1

シナリオ:私のサービスは、カウントに基づいて別のレストサービスを複数回呼び出します。 datapowerにイベントシンクアクションを使用しています。データパワーでイベントシンク後に複数のJSON応答を抽出する方法

私は他のサービスを何度も起動することができ、返信しました。しかし、私は、次のXSL 複数のコンテキスト変数に応答(JSON)をキャプチャすることはできませんよ作成されています:

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

私はコンテキスト変数からJSON responseを抽出するにはどうすればよいです。 私が電話しているサービスは、JSON request and response

の後に電話ごとにJSON responseをどのように抽出できますか?応答JSON bodyはどこに保存されますか?

答えて

0

私は100%に従っているかどうかはわかりませんが、他のサービスにどのようにトリガーしていますか?

まず、FW 7+であれば、GatewayScript(GWS〜Node.js)の使用を検討してください!

結果アクションを使用している場合は、リクエストごとに実行されるレスポンス(サーバーからクライアント)ルールを取得する必要があります。

これ以外の場合は、各リクエスト(トリガー)ごとにテンプレートを呼び出し、それをurl-open()で呼び出すことで、リクエストごとにレスポンスを得ることができます。

GWSを使用する場合は、同じでもJavaScriptではなく、ループを作成し、各イベントに対してurl-openを呼び出して、呼び出しごとに応答を取得します。

+0

を、呼び出しは非同期です。だから私は複数の出力をNOとして保持します。私はプローブ内部の内容(最後に誘発された応答)で内容を見ることができます。しかし、私は複数の出力をYESとして保持します。私はプローブでコンテンツを見たことができませんが、2つの(要求に基づいて)コンテキスト変数が定義されています。基本的に私はこれらのコンテキスト変数からレスポンス(JSON)を抽出できるxslを探しています。 –

+0

これは非同期なので、実際には別のトランザクションになり、プローブでフェッチされません。 結果アクションを使用する必要がありますか、代わりにXSLT変換アクションからすべての要求を実行できますか? – Anders

+0

私は他の2つの方法を試みます。私はDPA(XML to cpy)アクションの後に出力を抽出しようとしている間、別の種類の同じ問題を抱えています。出力はバイナリ形式です。バイナリコンテンツをどのように抽出し、xslに従うのに使うことができますか?通常、以下のコードを使用してバイナリをデコードします。

0

テンプレートマッチの前にこれを試してみてください。

_ VAR://コンテキスト/

今、あなたが作成したサービス変数にそれぞれのために行います。

あなたが好きどのように、それぞれの中に応答変換を行います。

0

コンテキストの内容は、コンテキスト変数であるかのようにアクセスできます。

はこのような何か試してみてください:私は、結果のアクションを使用して呼び出しています

<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>