我有一个正在发出HTTP POST请求的apache camel路由,即
from(...).setHeader(Exchange.HTTP_METHOD, constant(POST)).to("http4://myUrl?...");
请求URL包括查询参数(我知道POST不常见,但我别无选择),我需要从存储在正文中的交换细节中填充。
即。身体像POJO一样:
public class Params {
String param1;
int param2;
....
//etc. etc. including getters and setters
}
其中每个字段都是基元或字符串,并直接引用等效的查询参数:
http4://myUrl?param1=...¶m2=...&...
有没有办法可以避免手动定义URL上的每个参数,而是自动映射交换体以查询正在发出请求的参数?
我需要这样做的原因是某些查询参数是可选的,应该根据交换体的内容进行填充。
答案 0 :(得分:1)
您可以使用分隔的查询参数设置标头Exchange.HTTP_QUERY。
它不可能从消息体自动映射其字段到URI参数(不包括魔法)。您需要构建一些代码来计算URI查询,&
分隔值,并将其设置为HTTP_QUERY
标题。