我正在尝试使用骆驼根据请求正文的内容重定向http请求。
我已经创建了一个用于接收http请求的终结点,并且能够使用以下路由将请求成功重定向到其他URL;
<route>
<from uri="servlet:myapptest2?matchOnUriPrefix=true"/>
<to uri="http://sampleurl/test?bridgeEndpoint=true&throwExceptionOnFailure=false" />
</route>
但是我无法找到一种检查http请求正文的方法。我的HTTP请求将具有与此相似的JSON正文;
{
"testLoginRequest": {
"sampleData1": [{
"key1": "val1",
"key2": "val2"
}],
"sampleData2": [{
"key1": "val1",
"key2": "val2"
}]
}
}
如果JSON包含值“ testLoginRequest”,我想将请求重定向到特定的URL。 我读到,这应该是可能的;
from("direct:test").
choice().
when(body().contains("javainuse1"))
.to("jms:queue:javainuse1").
otherwise().
to("jms:queue:otherwise");
由于必须使用XML DSL,因此我尝试实现以下路由,但似乎不起作用;
<route>
<from uri="servlet:myapptest3?matchOnUriPrefix=true" />
<choice>
<when>
<simple>${body} contains 'testLoginRequest' </simple>
<to uri="http://sampleurlforlogin/test?bridgeEndpoint=true&throwExceptionOnFailure=false" />
</when>
</choice>
</route>
我遵循正确的方法吗?我在这里做什么错了?