当前位置: 首页 > 知识库问答 >
问题:

Apache Camel exchange主体到URI查询参数

徐弘图
2023-03-14

我有一个apache camel路由,它正在发出HTTP POST请求,即。

from(...).setHeader(Exchange.HTTP_METHOD, constant(POST)).to("http4://myUrl?...");
public class Params {
    String param1;
    int param2;
    ....
    //etc. etc. including getters and setters
}
http4://myUrl?param1=...&param2=...&...

有没有一种方法可以避免手动定义URL上的每个参数,而是自动地将exchange正文映射到正在发出的请求上的查询参数?

我需要这样做的原因是,有些查询参数是可选的,应该根据exchange正文的内容填充。

共有1个答案

许明朗
2023-03-14

您可以设置头exchange.http_query,并将查询参数分开。

而且不可能从消息体、其字段自动映射到URI参数(不包括任何魔法)。您需要构建一些代码来计算URI查询,&分隔值,并将其设置为http_query标头。

 类似资料:
  • 我注意到Java的没有对查询参数值(ISO 8601格式的字符串)中包含的字符进行编码。 根据维基百科,冒号似乎应该被编码。 具体而言,对查询字符串进行编码时使用以下规则: null 那么,怎么回事?查询参数中的冒号是否应该编码? 更新: 我查阅了URI语法规范(RFC3986),看起来在查询参数中编码冒号真的没有必要。以下是ABNF for URI的摘录:

  • 但结果是一样的。 这是我的.hbm.xml文件中的内容: 对于用户: 我做错了什么?如果查询参数不是“简单”类型,我需要做一些特殊的事情吗?

  • 查询创建工具及查询编辑器都支持在查询文本使用参数。你可以设置查询参数来在每次运行查询时添加变量值。参数应作为一个识别符以 $ 开头,[ ] 括住,例如 [$任何名]。 运行查询及 输入参数 对话框提供你输入想要搜索的数据。

  • 查询支持在查询文本内使用参数。你可以设置查询参数,于每次运行查询时添加变量值。参数是一个以 $ 开头以及用 [ ] 括住的标识符,例如:[$任何名]。 运行查询时,你可以在“输入参数”对话框输入你想要搜索的数据。如勾选“原始模式”选项,将不会在传递输入值到查询时添加引号。

  • 查询支持在查询文本内使用参数。你可以设置查询参数,于每次运行查询时添加变量值。参数是一个以 $ 开头以及用 [ ] 括住的标识符,例如:[$任何名]。 运行查询时,你可以在“输入参数”对话框输入你想要搜索的数据。如勾选“原始模式”选项,将不会在传递输入值到查询时添加引号。

  • 查询支持在查询文本内使用参数。你可以设置查询参数,于每次运行查询时添加变量值。参数是一个以 $ 开头以及用 [ ] 括住的标识符,例如:[$任何名]。 运行查询时,你可以在“输入参数”对话框输入你想要搜索的数据。如勾选“原始模式”选项,将不会在传递输入值到查询时添加引号。