Camel-Restlet生成器消息体为null

时间:2017-12-13 19:52:33

标签: apache-camel

使用camel-restlet调用rest端点时,未设置post body。 这是我的blueprint.xml

<camelContext id="blueprint-bean-context-SF"
    xmlns="http://camel.apache.org/schema/blueprint">

    <route id="Camel-Restlet-Client">

        <from uri="timer://example?repeatCount=1&amp;period=1000" />
        <setHeader headerName="Content-Type">
            <constant>application/json</constant>
        </setHeader>
        <setHeader headerName="api-key">
            <constant>{{drupal-api-key}}</constant>
        </setHeader>
        <setBody><constant>{name: "paul rudd", movies: ["I Love You Man", "Role Models"]}</constant></setBody>
        <log message="Request: ${headers} \n ${body}" />
        <to uri="restlet:https://reqres.in/api/users?restletMethod=POST" />
        <log message="Response: ${headers} \n ${body}" />
    </route>

</camelContext>

我正在使用骆驼2.20.1。任何帮助表示赞赏?

1 个答案:

答案 0 :(得分:0)

我是cmel自己的新手,但我猜这个问题是你正在使用的setHeader。因为setHeader设置了Camel-Message的头部,而不是通过线路发送的http请求的头部。您需要在消息上设置标题,这将由restlet知道。并且restlet会将setheader的值传输到http-request的theader。

抱歉,我不知道怎么做。以下编码使用Header进行身份验证:

restConfiguration("restlet").bindingMode(RestBindingMode.json); // use json for all

from("timer://example?repeatCount=1&period=1000")
.setHeader("CamelRestletLogin", constant("xxx"))
.setHeader("CamelRestletPassword", constant("xxx"))
.to("restlet:https://xxx.hana.ondemand.com:443/ain/services/api/v1/models")

我不能帮助更多。