在我的mule流程中 - 尝试使用post http服务将值插入数据库。我可以成功地将post body从输入流转换为json。但是在尝试在表中插入值时,只插入了null值。
流程:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="9191" doc:name="HTTP Listener Configuration"/>
<db:mysql-config name="MySQL_Configuration" host="#######" port="####" user="####" password="#####" database="#####" doc:name="MySQL Configuration"/>
<flow name="patient-symptomFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/symptom" allowedMethods="POST" doc:name="HTTP"/>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
<set-variable variableName="payload" value="#[payload]" doc:name="Variable"/>
<byte-array-to-object-transformer doc:name="Byte Array to Object"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<db:insert config-ref="MySQL_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[insert into test(uuid) values(#[payload.test])]]></db:parameterized-query>
</db:insert>
</flow>
</mule>
Json输入:
{
"test" : "success"
}
答案 0 :(得分:1)
试试这个,我能够根据你提供的输入得到“成功”的价值。
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="poc_Flow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/>
<set-variable variableName="payload" value="#[payload]" mimeType="application/json" doc:name="Variable"/>
<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
<logger message="#[payload.test]" level="INFO" doc:name="Logger"/>
</flow>
答案 1 :(得分:1)
<flow name="patient-symptomFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/symptom" allowedMethods="POST" doc:name="HTTP"/>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
<set-variable variableName="payload" value="#[payload]" doc:name="Variable"/>
<byte-array-to-object-transformer doc:name="Byte Array to Object"/>
<db:insert config-ref="MySQL_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[insert into test(uuid) values(#[json:test])]]></db:parameterized-query>
</db:insert>
</flow>
这应该有效。无需转换为对象。
答案 2 :(得分:1)
试试这个:
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="poc_Flow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/>
<set-variable variableName="payload" value="#[payload]" mimeType="application/json" doc:name="Variable"/>
<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
<logger message="#[payload.test]" level="INFO" doc:name="Logger"/>
</flow>