我正在解析请求。 我用 Java 开发了用于解析传入请求的路由。
我正在使用 Camel 2.9 和 FuseESB 7.0.1.0.84。
我使用simple(“{body}”).getText()
按照Camel手册获取传入请求
因此,我使用以下代码检查传入请求:
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
的值仅在一行中从肥皂请求更改为“”。此外,“xmlStringToParse equals ${body}
”被打印为“xmlStringToParse equals
”,而不打印${body}
。 ${body}
未打印在日志中。
可以看到日志输出如下:
<error>
Value of xmlStringToParse: <somesoapRequest>
xmlStringToParse is empty: false
xmlStringToParse equals : true
Again checking incoming request:
</error>
谁能告诉我如何解决这个问题以及这种奇怪行为的原因?
最佳答案
I used simple(“{body}”).getText() to fetch incoming request as per Camel Manual
你在哪里看到的?有链接吗?
您应该以不同于您所做的方式获取消息正文,例如
String body = exchange.getIn().getBody(String.class);
或者如果使用bean参数绑定(bind),则可以绑定(bind)消息体,只需将参数声明为String类型即可
public void foo(String body) {
...
}
在 Camel 文档中查看更多详细信息,例如:http://camel.apache.org/bean-binding.html
关于java - FuseESB 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14242483/