如何在使用rest api时发送json有效负载

时间:2016-01-14 05:52:53

标签: api rest mule consumer

我有一个api开发,并希望在骡子流中消耗这个api 但是当我从chrome测试时:postman我得到了以下错误。

Message payload is of type: BufferInputStream

所以我试着记录消息,下面我得到了

org.glassfish.grizzly.utils.BufferInputStream@e2ed077

基本上我的要求是如何将json有效负载传递给我的api。以下是我的代码段。

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8083" doc:name="HTTP Listener Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="localhost" port="8082" doc:name="HTTP Request Configuration">
    <http:basic-authentication username="sa" password="sa"/>
</http:request-config>
<flow name="get-response-container-storeFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/testapi" doc:name="HTTP"/>
    <logger message="******************Executed Test_Container_Store_API*******************#[payload]" level="INFO" doc:name="Logger"/>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    <http:request config-ref="HTTP_Request_Configuration" path="/apie" method="POST" sendBodyMode="NEVER" doc:name="HTTP">
    </http:request>

1 个答案:

答案 0 :(得分:0)

您可以在<object-to-string-transformer/>之后(或更重要的是,在记录器之前)添加http:inbound作为第一个消息处理程序,以解决记录器的第一个“错误”。

如果您想在请求中包含正文,则应从请求中删除sendBodyMode="NEVER"属性。

来自MuleSoft文档:

  

默认情况下,方法GET,HEAD和OPTIONS使用空主体发送HTTP请求,并且根本不会使用Mule消息的有效负载。其余方法将消息有效负载作为请求的主体发送。如果需要更改此默认行为,可以使用以下可能值之一指定请求中的sendBodyMode属性:

     

AUTO(默认值):行为取决于方法。没有为GET,OPTIONS和HEAD发送正文,否则发送它。

     

始终:身体总是被发送。

     

永远:身体永远不会被发送。

这意味着,由于您将此属性设置为永远不会将您的有效内容作为请求正文包含在内。