0

我正在解析请求。我在 Java 中开发了用于解析传入请求的路由。

我正在使用带有 FuseESB 7.0.1.0.84 的 Camel 2.9。

我曾经simple(“{body}”).getText()按照骆驼手册获取传入的请求

所以我使用以下代码检查传入的请求:

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()

观察到的奇怪结果:

从soap request 到""的值xmlStringToParse仅在一行中改变。此外,“<code>xmlStringToParse equals ${body}”打印为“<code>xmlStringToParse equals”而不打印${body}${body}不打印在日志中。

您可以找到以下日志输出:

   <error>
    Value of xmlStringToParse: <somesoapRequest>
    xmlStringToParse is empty: false
   xmlStringToParse equals : true
  Again checking incoming request:
 </error>

谁能告诉我如何解决这个问题以及这种奇怪行为的原因?

4

1 回答 1

2

我使用 simple(“{body}”).getText() 根据 Camel Manual 获取传入请求

你在哪里看到的?你有链接吗?

您应该以另一种方式获取消息正文,而不是您所做的,例如

String body = exchange.getIn().getBody(String.class);

或者如果你使用bean参数绑定,你可以绑定消息体,只需声明参数为String类型

public void foo(String body) {
   ...
}

在 Camel 文档中查看更多详细信息,例如:http ://camel.apache.org/bean-binding.html

于 2013-01-10T08:55:14.687 回答