Camel Apache:如何将变量放入网址?

时间:2014-12-03 16:07:22

标签: json apache-camel unmarshalling dynamic-url

我需要创建一条路线(或者不仅仅是一条路线)来执行以下操作:

  1. 从.txt文件中读取一些ID(由/n标记为)
  2. 对于每个ID,我将向网址(http://myexample.com/something/**id**
  3. 发出GET请求
  4. 每个请求都会带给我一个JSON
  5. JSON将被解组为XML
  6. 所以,我需要一个JSON文件,用于我的file.txt中的每个id。如果我有10个ID,我将从该URL获取10个JSON文件。我创建了从文件夹中获取JSON并将其解组为XML的组件。另外,我将我的file.txt标记为了。

    问题是我不知道如何为每个id获取JSON文件,更确切地说,我如何动态转换我的网址?

    我的代码是:

    <camel:route id="getRequestForEachId">
                <camel:from uri="file:src/main/resources/idList?noop=true" />
                <camel:split>
                    <camel:tokenize token="\n" />
                    <camel:to uri="stream:out" />
                     <camel:recipientList>
                        <camel:simple>
                         http://myexample.com/something/${body}
                        </camel:simple>
                    </camel:recipientList> 
                    <camel:to uri="file:src/main/resources/jsonMandatFromReq" />
                    <!--from this will take my json->xml component-->
                </camel:split>
    </camel:route>
    

    使用此代码我收到405错误:

    HTTP operation failed invoking http://google.com/something/3 with statusCode: 405 
    

    3来自带有ID的file.txt。所以url是以某种方式构建的,但我以例外结束。

    我会喜欢具体的帮助,而不是骆驼网站上动态网址的网址。非常感谢你!

    LE

    以下答案解决了我的主要问题,但我现在又有了另一个问题。 GET方法不会停止发出请求。

    我希望每个id只有一个请求,为此,我会根据每个请求或ID获取一个JSON文件。 但我的路线是不断提出要求。带有ID的列表结束后,它会再次开始。所以当我每个id只需要一个JSON文件时,我会为一个id结束许多JSON文件。

    我不想覆盖现有的JSON文件。我希望每个id只有一个GET请求。 我该如何解决这个问题?

0 个答案:

没有答案