首页 > 解决方案 > 带有包含 `toD` 中值列表的参数的 URL 被折叠成单个值

问题描述

我有一个调用 Web 服务的 Camel 路由,该服务期望的参数之一是包含值列表的 URL 参数,即。p1myhost/myuri?p1=foo&p1=bar.

我把它放在一个toDURI 中,因为参数值需要是动态的,即。<camel:toD uri="http4://myhost/myuri?p1=foo&amp;p1=bar" >(为简洁起见,省略了 Camel 参数和变量)。

Camel 将其转换为p1=%5Bfoo%2C+bar%5D(url-encoded p1=[foo, bar]),后端服务不接受。我无法控制这个后端服务,也不能指望它的界面在未来发生变化。

有什么方法可以强制 Camel 以我想要的方式调用后端服务,而不是将具有多个值的参数收集到类似数组的格式中?

标签: apache-camel

解决方案


另一种方法是将CamelHttpQuery标头与 一起使用to,而不是toD端点

<setHeader headerName="CamelHttpQuery"><simple>p1=foo&amp;p1=bar</simple></setHeader>
<to uri="http4://myhost/myuri">

推荐阅读