【问题标题】:Camel Spring DSL Route: set http query parameterCamel Spring DSL Route:设置http查询参数
【发布时间】:2016-10-27 09:33:52
【问题描述】:

我是骆驼新手,我认为文档很大,但结构可以更好。所以很难找到你要找的东西。

我的问题:我在 spring DSL 中定义了一个骆驼路由,用于从骆驼 servlet 重定向到另一个 http 端点。在重定向时,应设置一些 http 查询参数,如 PARAM1:

<route id="bridge">
    <from uri="servlet:bridge" />
    <setHeader headerName="HTTP_QUERY">
        <constant>PARAM1=value1</constant>
    </setHeader>
    <to uri="http://127.0.0.1:8081/actions.do?bridgeEndpoint=true" />
</route>

重定向有效,但“TO”端点没有获取参数 PARAM1。 我的错在哪里?

问候 jundl

【问题讨论】:

    标签: spring http routes apache-camel dsl


    【解决方案1】:

    要将查询参数发送到 http 端点,您可以使用 HTTP_QUERY 标头,如下所示

       <route>
        <from uri="servlet:bridge" />
        <setHeader headerName="HTTP_QUERY">
         <constant>param1=value1&param2=value2</constant>        
        </setHeader>
        <to uri="http://127.0.0.1:8081/actions.do?bridgeEndpoint=true" />
       </route>
    

    如果你想要一些动态值,比如标题值作为 value1,你必须使用如下骆驼简单标签

      <route>
        <from uri="servlet:bridge" />
        <setHeader headerName="HTTP_QUERY">
         <simple>param1=${headerNameOfValue1}&param2=value2</simple>        
        </setHeader>
        <to uri="http://127.0.0.1:8081/actions.do?bridgeEndpoint=true" />
       </route>
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      试试这个http://camel.apache.org/constant.html

      <route>
         <from uri="servlet:bridge" />
        <setHeader headerName="PARAM1">
          <constant>value1</constant>        
        </setHeader>
        <to uri="http://127.0.0.1:8081/actions.do?bridgeEndpoint=true" />
      </route>
      

      【讨论】:

      • 谢谢,不起作用,但现在带有前缀“Exchange”。在 headerName 处没关系 :) ..但一般来说:认为 PARAM1 定义为 http 请求 url 查询参数而不是标头,这是令人困惑的
      【解决方案3】:

      您使用了错误的 headerName。如果要在 DSL 路由中使用 Exchange.HTTP_QUERY 常量,则需要写入其值。也就是说,您必须编写“CamelHttpQuery”,而不是编写“HTTP_QUERY”。看看https://camel.apache.org/maven/current/camel-core/apidocs/constant-values.html

      如果您以这种方式更改代码,它将起作用:

      <route id="bridge">
          <from uri="servlet:bridge" />
          <setHeader headerName="CamelHttpQuery">
              <constant>PARAM1=value1</constant>
          </setHeader>
          <to uri="http://127.0.0.1:8081/actions.do?bridgeEndpoint=true" />
      </route>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-29
        • 2016-05-05
        相关资源
        最近更新 更多