Apache Camel: HTTP(和其他生产者)中的URI转义

3
在Apache Camel路由中,我想安全地将多个标头组合成HTTP查询字符串。我找到的唯一示例要么使用constant(),这对于构建动态查询字符串没有用处,要么使用simple(),它不提供URL转义。
例如,从HTTP组件文档中获取以下片段:
   from("direct:start")
      .setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
      .to("http://oldhost");

这已经完成了90%的工作,但是如果您不总是想要订单ID 123怎么办?我们希望能够在此处替换标头值。因此,这个问题的下一个逻辑版本是切换到简单模式:

   from("direct:start")
    .setHeader(Exchange.HTTP_QUERY, simple("order=${header.orderId}&detail=short"))
    .to("http://oldhost");

但是这种方法的主要问题在于它没有进行URL编码。这意味着在header.orderId中包含空格(或任何保留字符)会导致HTTP组件抛出异常,因为查询字符串无效。
所以唯一剩下的方法就是使用JavaScript,但对于像这样的事情来说,它非常冗长,或者编写一个自定义处理器。看起来这应该是内置的东西,所以我在这里询问是否有明显/正常的方法来完成我正在寻找的内容?
网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接