如何在Mule ESB中记录HTTP请求的正文(POST)(XML)

时间:2015-02-18 22:15:49

标签: mule mule-studio

您好我正在尝试在Mule ESB中记录POST内容的内容,因为另一端接收除了二进制的ContactId之外的所有内容。我们正在尝试确定错误的位置。这是流程。

<flow name="ContactUpdate">
    <http:inbound-endpoint exchange-pattern="request-response" host="host" port="port" path="ContactUpdate" doc:name="HTTP"/>
    <logger level="INFO" doc:name="Logger" message="#[payload]"/>
    <ws:consumer config-ref="Web_Service_Consumer" operation="UpdateContact" doc:name="UpdateContact"/>
</flow>

在日志中,我只能看到内容的长度和其他信息,但不能看到POST中发送的正文的实际内容。有可能做这样的事吗?

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

作为explained in the documentation,您可以在MEL表达式中将有效负载检索为字符串:

<logger level="INFO" message="#[message.payloadAs(java.lang.String)]"/>

请记住,这将反序列化HTTP请求输入流有效负载,如果您收到巨大的负载,这可能会严重损害您的内存。

答案 1 :(得分:0)

  1. 在Any-point Studio中,放置一个Logger组件,就在Web使用者组件
  2. 之前
  3. 在“常规”部分中,消息:#[message.payloadAs(java.lang.String)] 级别:INFO(默认)。

答案 2 :(得分:0)

我们可以使用Mule的自动转换功能以特定格式检索消息有效负载,使用payloadAs:

<logger message="#[message.payloadAs(java.lang.String)]" />

您的代码可以更改为

<flow name="ContactUpdate">
    <http:inbound-endpoint exchange-pattern="request-response" host="host" port="port" path="ContactUpdate" doc:name="HTTP"/>
    <logger level="INFO" message="#[message.payloadAs(java.lang.String)]"/>
    <ws:consumer config-ref="Web_Service_Consumer" operation="UpdateContact" doc:name="UpdateContact"/>
</flow>