如何在Mule中将org.glassfish.grizzly.utils.BufferInputStream转换为JSON?
在使用Mule的第一步中,我正在编写一个基本的Http代理。 目前,我将请求转发到api服务器,我想做的是在响应客户端之前读取从它接收到的有效负载 当我尝试用#[payload]记录时,它会打印出来如何在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
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类型