无法读取API资源中的HTTP标头

时间:2017-10-26 18:14:28

标签: api logging http-headers wso2 esb

我正在尝试从我在ESB中定义的API内部读取HTTP标头。我尝试了各种方法(见下文),所有方法都打印出来" null"在日志中。

<log level="custom"> 
    <property name="LOG-POSITION___________________________" value="...4"/>
    <property name="AXIS2___________________________" expression="$axis2:accept"/>
    <property name="AXIS2___________________________" expression="$axis2:Accept"/> 
    <property name="AXIS2___________________________" expression="$axis2:ACCEPT"/> 
    <property name="CTX___________________________" expression="$ctx:accept"/> 
    <property name="CTX___________________________" expression="$ctx:Accept"/> 
    <property name="CTX___________________________" expression="$ctx:ACCEPT"/> 
    <property name="TRP___________________________" expression="$trp:accept"/> 
    <property name="TRP___________________________" expression="$trp:Accept"/> 
    <property name="TRP___________________________" expression="$trp:ACCEPT"/> 
</log>

我无法理解为什么它不起作用。

2 个答案:

答案 0 :(得分:0)

这是读取和记录内容类型http标头的突触代码。这里$trp代表传输标题。

<log level="custom">
     <property name="Content_Type" expression="$trp:Content-Type"/>
</log>

参考:https://docs.wso2.com/display/ESB500/Synapse+XPath+Variables

如果不起作用,请enable wire logs并在问题中发布日志。

答案 1 :(得分:0)

通过查看现有代码并进行一些试验和错误,我找到了答案。

表达式“$ trp:Accept”有效,但必须在使用调用或发送调解器之前使用它。

对于遇到此问题的其他人,请移动属性调解器以将其抓取到代理或api的开头,并且值应该通过。