Apache Camel 3.2.0.x:如何阻止toD URI查询参数值编码特殊字符
Apache Camel 3.2.0.x 阻止toD URI中斜杠重复编码的方法
你遇到的是Camel对URI参数的二次编码问题:当header中的参数包含斜杠(/)时,Camel会先将其编码为%2F,随后在拼接URI时又对%进行编码,最终变成%252F。要直接传递原始斜杠,可通过以下几种方式解决:
使用
raw()函数包裹header引用
这是最直接的方案,raw()会强制Camel使用header的原始值,跳过自动编码逻辑。修改后的配置如下:<toD Uri="{{url}}&parameterA=${raw(header.parameterA)}&parameterB=${header.parameterB}" />手动解码参数(适用于已被编码的场景)
如果header中的值已经被编码过一次,可使用decode()函数还原原始斜杠,再传递到URI中:<toD Uri="{{url}}&parameterA=${decode(header.parameterA, 'UTF-8')}&parameterB=${header.parameterB}" />全局关闭路径编码(不推荐)
若需要全局禁用URI路径部分的编码,可在Camel上下文配置中添加参数org.apache.camel.uri.encode.path=false。但此方法会影响所有URI的编码逻辑,可能引发其他参数的安全性问题,仅建议在特殊场景下使用。
内容的提问来源于stack exchange,提问作者Himanshi Jain
相关产品推荐
相关产品推荐

