apache-camel - 带有包含 `toD` 中值列表的参数的 URL 被折叠成单个值
问题描述
我有一个调用 Web 服务的 Camel 路由,该服务期望的参数之一是包含值列表的 URL 参数,即。p1
在myhost/myuri?p1=foo&p1=bar
.
我把它放在一个toD
URI 中,因为参数值需要是动态的,即。<camel:toD uri="http4://myhost/myuri?p1=foo&p1=bar" >
(为简洁起见,省略了 Camel 参数和变量)。
Camel 将其转换为p1=%5Bfoo%2C+bar%5D
(url-encoded p1=[foo, bar]
),后端服务不接受。我无法控制这个后端服务,也不能指望它的界面在未来发生变化。
有什么方法可以强制 Camel 以我想要的方式调用后端服务,而不是将具有多个值的参数收集到类似数组的格式中?
解决方案
另一种方法是将CamelHttpQuery
标头与 一起使用to
,而不是toD
端点
<setHeader headerName="CamelHttpQuery"><simple>p1=foo&p1=bar</simple></setHeader>
<to uri="http4://myhost/myuri">
推荐阅读
- javascript - 使用 Smoothstate 重新加载 Ajax 后未应用背景 CSS 属性
- gensim - doc2vec(gensim) infer_vector 需要窗口大小的填充句吗?
- database - 如何检查oracle数据库中的sql_trace?
- node.js - Graphql 服务器 + NodeJS,使用 Redis 将数据存储在缓存中
- jquery - 请求的资源上不存在“Access-Control-Allow-Origin”标头,响应的 HTTP 状态代码为 401
- angular - 不活动后Angular 4重定向
- wordpress - 是否可以使用负载平衡和自动缩放在 aws ec2 中创建 wordpress 站点
- ruby-on-rails - 如何将数据写入excel文件
- jenkins - 设置 Sonar-Gerrit 插件:无法在 UserAtHost 上执行命令“gerrit review”
- java - Elasticsearch 使用 RestHighLevelClient 设置限制和偏移量