如何在Mule中将org.glassfish.grizzly.utils.BufferInputStream转换为JSON?

如何在Mule中将org.glassfish.grizzly.utils.BufferInputStream转换为JSON?,mule,Mule,在使用Mule的第一步中,我正在编写一个基本的Http代理。 目前,我将请求转发到api服务器,我想做的是在响应客户端之前读取从它接收到的有效负载 当我尝试用#[payload]记录时,它会打印出来 org.glassfish.grizzly.utils.BufferInputStream@2306df30 如何以JSON格式正确打印 完整代码: <flow name="proxy"> <http:listener config-ref="http-lc-0.0.0

在使用Mule的第一步中,我正在编写一个基本的Http代理。 目前,我将请求转发到api服务器,我想做的是在响应客户端之前读取从它接收到的有效负载

当我尝试用#[payload]记录时,它会打印出来

 org.glassfish.grizzly.utils.BufferInputStream@2306df30
如何以JSON格式正确打印

完整代码:

<flow name="proxy">
    <http:listener config-ref="http-lc-0.0.0.0-8081" path="![p['proxy.path']]" parseRequest="false"/>

    <http:request config-ref="http-request-config" method="#[message.inboundProperties['http.method']]"
                  path="#[message.inboundProperties['http.request.path'].substring(message.inboundProperties['http.listener.path'].length()-2)]" parseResponse="false">
        <http:request-builder>
            <http:query-params expression="#[message.inboundProperties.'http.query.params']"/>
        </http:request-builder>
        <http:success-status-code-validator values="0..599" />
    </http:request>

    <logger doc:name="Logger" level="INFO" message="Payload #[payload]"/>

尝试
#[message.payloadAs(java.lang.String)]
,它将记录预期的输出


希望这有帮助。

HTTP请求后的有效负载通常是流格式的,参考:-
有两种方法可以在
http:request

1)
之后
http:request



2) 使用记录器并使用MEL表达式,http组件将作为InputStream发送,因此在http组件之后使用字节数组进行字符串转换。如果只想打印,可以使用35;[message.payloadAs(java.lang.string)]但你想做任何操作,只需将一个字节数组拖放到字符串转换器中,最简单的方法就是在http请求组件之后使用
,然后放置一个带有
#[payload]

的记录器,确保获得正确的JSON响应的一种方法是将payload设置为
应用程序/JSON
mimetype

<set-payload value="#[payload]" mimeType="application/json" doc:name="Set Payload"/>

在HTTP请求之后添加此行。只需将有效负载值设置为
#[payload]
即可将其转换为
json
,而将其转换为字符串只需将其打印为字符串,而不会将其转换为json类型