使用Apache Camel处理JSON请求

时间:2016-01-13 16:15:31

标签: java json jetty apache-camel

我想处理第三方为我的系统做的HTTPs请求。请求包含JSON对象

我尝试过使用Camel的Jetty组件但是当第三方执行请求时,Camel会抛出以下异常:

org.apache.camel.RuntimeCamelException: Cannot read request parameters due Invalid parameter, expected to be a pair but was {"id":"321","rec":"533","status":"ok"}

Jetty端点在蓝图中定义为:

<camel:endpoint id="getRequestEndpoint" uri="jetty:{{webServiceProtocol}}://{{jettyIp}}:{{jettyPort}}/getRequest?sslContextParametersRef=sslContextParameters"/>

我错过了什么或完全错误的道路?

2 个答案:

答案 0 :(得分:4)

确保您的客户端正在为JSON发送相应的Content-Type HTTP请求标头,即:

Content-Type: application/json

看起来它没有被发送,Jetty组件回退以形成数据解释。

答案 1 :(得分:0)

确保还向端点定义中添加了预期的bean类型,如下所示:

.post()
    .type(User.class)
    .to("direct:your-queue")

严格来说,这不是答案,因为在这种情况下,您会看到以下所示的不同异常。但我希望它能对某人有所帮助。

org.apache.camel.InvalidPayloadException: No body available of type: 
com.example.User but has value: {id=69, name=Hello world} of type: 
java.util.LinkedHashMap