如何在esb中读取http标头

时间:2014-09-15 18:45:30

标签: wso2 wso2esb

如何将属性设置为传入的http请求标头的值?我尝试了一些事情(见下文),但我的日志值都是null,所以我显然没有正确读取标题值。我真正关心的标题值是X-EMPID。使用wso2esb 4.8.1。

以下couple posts让我相信这会奏效,但我还没有运气。

<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="getaccount2"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <property name="empid"
                   expression="get-property('transport', 'X-EMPID')"
                   scope="default"
                   type="STRING"/>
         <log level="custom">
            <property name="emp_id" expression="get-property('empid')"/>
         </log>
         <log level="custom">
            <property name="content_length"
                      expression="get-property('transport', 'Content-Length')"/>
         </log>
         <log level="custom">
            <property name="TRANSPORT_HEADERS" expression="get-property('TRANSPORT_HEADERS')"/>
         </log>

1 个答案:

答案 0 :(得分:14)

通过使用XPath变量,您可以方便地访问HTTP头,这在技术上是WSO2 ESB中的传输头。读取名为X-EMPID的HTTP标头的最简单方法是使用以下XPath:$trp:X-EMPID,其中$trp前缀表示冒号后面的部分是传输属性的名称。要记录标头值,可以使用以下日志介体:

<log level="custom">
    <property name="X-EMPID value" expression="$trp:X-EMPID" />
</log>

要将属性myProperty设置为X-EMPID HTTP标头(已存储在传输属性中)的值,您将使用属性介体:

<property name="myProperty" expression="$trp:X-EMPID" />

该功能记录在the WSO2 site