Apache Camel标头在http查询中不起作用

trnvg8h3  于 2022-11-23  发布在  Apache
关注(0)|答案(1)|浏览(149)

我尝试在查询中使用访问令牌参数调用外部API,方法是从标题中获取该参数,但由于某种原因,它不起作用,API返回错误Access token not configured
但是当我在同一个字符串上调用log时,来自header的访问令牌似乎就在适当的位置。
我的路线中配置方法的代码:

from("direct:user_get")
        .log("https://api.vk.com/method/users.get?access_token=${header.access_token}&v=5.131")
        .to("https://api.vk.com/method/users.get?access_token=${header.access_token}&v=5.131");

调用FluentProducerTemplate(实际令牌替换为“token_example”):

String userGetResponse = producerTemplate
        .to("direct:user_get")
        .withHeader("access_token", "token_example")
        .request(String.class);

当我将token直接传递到.to()调用本身时,一切正常,API返回有效响应。

fbcarpbf

fbcarpbf1#

你需要使用toD,因为它是一个动态端点。所以你发送的是这个字符串${header.access_token},而不是头令牌。

.toD("https://api.vk.com/method/users.get?access_token=${header.access_token}&v=5.131");

正常情况下,to不会转换URI,只会转换为D make this。请检查Docs
to用于向静态终结点发送消息。换句话说,to仅向同一终结点发送消息。
toD用于将消息发送到动态端点。动态端点由表达式按需计算。默认情况下,简单表达式用于计算动态端点URI。

相关问题