我试图从属性内容创建有效负载:
<payloadFactory media-type="xml">
<format>$1</format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
WSO2 ESB不接受此作为有效的有效载荷格式。我能做些什么来实现这个目标?
答案 0 :(得分:2)
您无法使用Payload Factory。它需要这样的包装XML标记。
<payloadFactory media-type="xml">
<format><Root>$1</Root></format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
但你可以用Enrich mediator做你想做的事。
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
Here是一个类似的样本。
答案 1 :(得分:-1)
可能是因为“响应”的类型。克洛维斯。 我使用它并发现没问题。
<property description="requestBk" expression="json-eval($.)" name="requestBk" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>$1</format>
<args>
<arg evaluator="xml" expression="$ctx:requestBk"/>
</args>
</payloadFactory>
另一个提示。使用$ctx:
代替get-property
方法可获得更好的效果。因为get-property
也会查看registry
。
是的!正如Bhathiya和Maria建议您也可以使用Enrich mediator
,如下所述。
使用Enrich mediator
将原始有效内容复制到属性。
<enrich>
<source clone="false" type="body"/>
<target action="replace" type="property" property="ORGINAL_PAYLOAD"/>
</enrich>
然后,只要您需要原始有效负载,就可以使用Enrich mediator
将此消息正文替换为此属性值,如下所示:
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>