Я пытаюсь использовать верблюда для перенаправления 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"
}]
}
}
Я хочу перенаправить запрос на определенный URL-адрес, если JSON содержит значение «testLoginRequest».
Я читал, что это должно быть возможно, как;
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>
Следую ли я правильному подходу. Что я здесь не так делаю?