在Synapse中向XML消息添加标头

时间:2013-03-28 22:19:24

标签: wso2 synapse

使用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只支持简单的有价值的标题”。可能是这种情况吗?

由于

2 个答案:

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