2016-12-21 3 views
0

У меня есть асинхронный поток с полезной нагрузкой JSON (тип полезной нагрузки как java.lang.String) и попытка сделать POST-HTTP-коннектор запросов, но я получаю ошибку 400. Когда я запускаю приложение в отладчике, тип полезной нагрузки изменяется на org.glassfish.grizzly.utils.BufferInputStream из строки JSON, которая, я считаю, является проблемой.Полезная нагрузка на запрос запроса HTTP (POST) в Mule 3.7

enter image description here

Как решить эту проблему?

Благодаря

+0

Можете ли вы опубликовать фрагмент кода? – user1211

+0

Введите код: – ROA

ответ

0

<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) 
 
\t 
 
}]]></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>

+0

В своем FlowReference вы вызываете: createBomCollection Но единственный подпункт, который я вижу, это createApiCollection, его легко проверить, если вы публикуете HTTP-соединитель global.xml, который используете, и т. Д. – Alberici

+0

Рекомендация: для будущего вопросы, пожалуйста, отредактируйте ваш вопрос и добавьте там код! вместо ответа на свой вопрос. – Alberici

0

Если вы используете трансформатор Dataweave, используя выход JAVA возвращает этот объект типа "org.glassfish.grizzly.utils.BufferInputStream", например:

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

Попробуйте добавить объект в JSON после преобразования Dataweave ция!

<object-to-string-transformer doc:name="Object to String"/> 
Смежные вопросы