我正在尝试从我在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>
我无法理解为什么它不起作用。
答案 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的开头,并且值应该通过。