使用Synapse 2.1,我试图将没有标题的XML消息转换为SOAP消息,其中包含用于使用Web服务的凭据的标头。像这样:
突发传入消息:
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
...TAGS...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Synapse传出消息:
<SOAP-ENV:Envelope>
<SOAP-ENV:Header>
<yta:Authentication>
<yta:UserName>srnm</yta:UserName>
<yta:Password>psswrd</yta:Password>
</yta:Authentication>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
...TAGS...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我如何配置Synapse呢?我成功地使用转换文件来更新消息正文,但不是在输出中添加标题。
我尝试在配置文件中使用标头和属性介体,但我不确定要走的路。阅读标题中介,它说“目前set header只支持简单的有价值的标题”。可能是这种情况吗?
由于
答案 0 :(得分:3)
为了记录,我最终使用addHeader方法在配置文件中使用带有内联javascript脚本的脚本调解器。见下文:
<script language="js">
<![CDATA[
var user = mc.getPayloadXML()..*::UserName.toString();
var psswd = mc.getPayloadXML()..*::Password.toString();
mc.addHeader(false, <yta:Authentication xmlns:yta="yta:namespace url"><yta:UserName>{user}</yta:UserName><yta:Password>{psswd}</yta:Password></yta:Authentication>);
]]>
</script>
答案 1 :(得分:0)
您可以使用XSLT介体来操作它。因此,添加带有所需标头的XSLT转换,它将添加所需的标头。或者使用Script mediator / Class mediator来操作消息。
请参考以下有用的内容。
http://wso2.org/forum/thread/10794
http://wso2.org/forum/thread/10843
如果不需要这个xml结构。 你可以使用Http Headers,你可以使用如下属性。 http://blog.thilinamb.com/2011/04/how-to-access-web-service-using-http.html