我正在解析请求。 我在Java中开发了用于解析传入请求的路由。
我使用的是Camel 2.9和FuseESB 7.0.1.0.84。
我使用simple(“{body}”).getText()
按照Camel Manual
所以我使用以下代码检查传入的请求:
if (xmlStringToParse == null || xmlStringToParse.equals("") || xmlStringToParse.equals("${body}")) {
parsedXMLPath = "<error>Incoming request is as folows:"
+ "\nValue of xmlStringToParse: " + xmlStringToParse
+ "\n xmlStringToParse is empty: " + (xmlStringToParse.equals(""))
+ "\n xmlStringToParse equals ${body}: " + (xmlStringToParse.equals("${body}"))
+ "\nAgain checking incoming request:\n" + xmlStringToParse
+ "</error>";
}
xmlStringToParse = simple(“${body}”).getText()
观察到奇怪的事件:
xmlStringToParse
的值仅在从soap请求到“”的一行中更改。此外,“xmlStringToParse equals ${body}
”打印为“xmlStringToParse equals
”而不打印${body}
。 ${body}
未打印在日志中。
您可以在以下位置找到日志输出:
<error>
Value of xmlStringToParse: <somesoapRequest>
xmlStringToParse is empty: false
xmlStringToParse equals : true
Again checking incoming request:
</error>
有谁能告诉我如何解决这个问题以及这种奇怪行为的原因?
答案 0 :(得分:2)
我使用简单(“{body}”)。getText()根据Camel手册获取传入请求
你在哪里看到的?你有链接吗?
您应该以不同于您的方式获取邮件正文,例如
String body = exchange.getIn().getBody(String.class);
或者,如果使用bean参数绑定,则可以绑定消息体并仅将参数声明为String类型
public void foo(String body) {
...
}
在Camel文档中查看更多详细信息,例如:http://camel.apache.org/bean-binding.html