【问题标题】:How to set name and value of a transport header from two properties?如何从两个属性中设置传输头的名称和值?
【发布时间】:2019-04-28 19:44:27
【问题描述】:

我想在一个序列中添加一个传输头属性,而且头的名称和值应该是两个不同属性的值。

例如,我有两个属性 h_name 和 h_value:

<property name="h_name" expression="evaluate(get-property('name'))" scope="default" type="STRING"/>
<property name="h_value" expression="evaluate(get-property('value'))" scope="default" type="STRING"/>

然后,我想将这些值设置为传输标头的标头名称和值参数,例如:

<header name="(h_name)" value="(h_value)" scope="transport" action="set"/>

我尝试使用 get-property() 函数来使用 WSO2 的这些传输标头参数和 complexHeader 中介的值,但我找不到合适的解决方案。

<header>
     <m:complexHeader xmlns:m="http://org.synapse.example">
         <property expression="get-property('h_name')" value="name" />
         <property expression="get-property('h_value)" value="value" />
     </m:complexHeader>
</header>

感谢您的任何想法!

【问题讨论】:

    标签: xml wso2 wso2esb


    【解决方案1】:

    由于尚不支持动态名称 [1],您能否尝试使用脚本调解器或类调解器来满足此要求。

    下面是脚本中介示例的代码sn-p。

     <property name="name" type="STRING" value="givenName"/>
     <property name="value" type="STRING" value="123"/>
    
    
     <property expression="$ctx:name" name="h_name" type="STRING"/>
     <property expression="$ctx:value" name="h_value" type="STRING"/>
     <script language="js">
      var nameS = mc.getProperty("h_name");
      var valueS = mc.getProperty("h_value");
      mc.setProperty(nameS, valueS,"transport");
     </script>
    
    
     <log level="custom">
      <property expression="$trp:givenName" name="GIVEN NAME--"/>
     </log>
    

    [1] - https://github.com/wso2/product-ei/issues/3300

    【讨论】:

    • 嗨,我仍然无法动态设置标题名称。在 setProperty() 中,究竟什么是“传输”?它是另一个标题属性名称吗?
    • 属性的范围。你得到什么错误
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2021-12-30
    • 2011-08-29
    • 2012-03-13
    • 1970-01-01
    相关资源
    最近更新 更多