0

我有一个 WSO2 ESB 4.8.1 序列,它将消息发送到定义为的 HTTP 端点

<http method="get" uri-template="http://host.example.com/v1/entity/{uri.var.id}/attributes/foo">

该属性先前由 XPath 设置:

<property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.id" expression="//id" scope="default" type="STRING" />

有时它调用正确的 URL,有时它直接调用http://host.example.com/v1/entity/{uri.var.id}/attributes/foo而不替换变量。为什么?

4

1 回答 1

0

可能还有其他可能的原因,但似乎是我的问题的原因是逃避。如果 ID 是纯字母数字字符串,则它可以工作,但如果它包含空格字符,则不会被替换。记录错误消息并转到故障序列会更有帮助,但这是 WSO2 提出的问题。

我发现的修复方法是通过编辑和取消注释来启用 XPath 2.0;然后使用 XPath 2.0 的转义功能:repository/conf/synapse.propertiessynapse.xpath.dom.failover.enabled=true

<property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.id" expression="encode-for-uri(//id)" scope="default" type="STRING"/>
于 2015-09-17T16:01:16.983 回答