0
votes

I have an async flow with JSON payload (Payload Type as java.lang.String) and trying to do a POST to HTTP Request Connector but I am getting a 400 error. When I run the app in debugger, the payload type changes to org.glassfish.grizzly.utils.BufferInputStream from JSON string which I believe is the issue.

enter image description here

How do I resolve this issue?

Thanks

2
Can you post some code snippet? - user1211
Please find the code: - ROA

2 Answers

0
votes

If you use a Dataweave transformer, using JAVA output returns that Object of type "org.glassfish.grizzly.utils.BufferInputStream", e.g:

%dw 1.0
%output application/java
---
payload

Try adding the Object to JSON after your Dataweave transformation!

<object-to-string-transformer doc:name="Object to String"/>
0
votes

   <flow name="createFlow">
        <vm:inbound-endpoint exchange-pattern="one-way" path="createApi" connector-ref="VMConfiguration" doc:name="VM"/>
        <enricher doc:name="Message Enricher" source="payload" target="#[flowVars.createApiPayload]">
            <flow-ref name="createBomCollection" doc:name="createBomCollection"/>
        </enricher>
        <logger message="Payload after Create Api Call: #[message.payloadAs(java.lang.String)]" level="INFO" doc:name="Logger"/>
        <set-payload value="#[message.payload]" mimeType="application/json" doc:name="Set Payload"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
    (createApi: payload.createApi) when (payload.createApi != null)
	
}]]></dw:set-payload>
        </dw:transform-message>
    </flow>
    <sub-flow name="createApiCollection">
        <set-session-variable variableName="retryCount" value="#[new java.util.concurrent.atomic.AtomicInteger(0)]" doc:name="initialize retryCount"/>
        <logger message="Payload before system Post: #[message.payload]" level="INFO" doc:name="Logger"/>
        <http:request config-ref="System_HTTP_Request_Configuration" path="/bom1" method="POST" doc:name="HTTP">
            <http:request-builder>
                <http:header headerName="Content-Type" value="application/json"/>
                <http:header headerName="requestID" value="#[sessionVars.requestID]"/>
                <http:header headerName="transactionID" value="#[sessionVars.transactionID]"/>
                <http:header headerName="quoteID" value="#[sessionVars.quoteID]"/>
                <http:header headerName="operationName" value="#[sessionVars.operationName]"/>
            </http:request-builder>
        </http:request>
</sub-flow>