如何在Mule 3.5.2中链接RESTful Web服务调用

时间:2016-08-10 19:05:33

标签: json rest mule

我需要使用HTTP GET从RESTful Web服务检索JSON结构,

修改该数据并将生成的JSON POST到该Web服务,我将非常感谢如何获取该JSON并将其提供给第二个Web服务调用。

<http:connector name="Service-Connector_restRef" proxyHostname="" proxyPassword="" proxyPort="${Service-Connector-One.ProxyPort}" proxyUsername="" />

<http:outbound-endpoint address="http://${Service.Host}:8080/#[header:_REST_PATH]"  exchange-pattern="request-response" followRedirects="true" responseTimeout="10000" connector-ref="Service-Connector_restRef">

Mule站点使用AnypointStudio提供一些说明,但我必须修改现有的Mule流程,因此我需要使用XML配置文件。 TIA。

1 个答案:

答案 0 :(得分:0)

您仍然可以使用工作室更轻松地编辑现有流程。无论是导入,还是剪切和粘贴到项目中,都是一件简单的事情。这样做会给你很多好处。您是否可以选择迁移到新的运行时?如果您使用的是更新的运行时,则可以使用Dateweave从一种JSON格式转换为另一种JSON格式。如果您使用的是旧版本,请使用Datamapper而不是以下示例。

然而,您的问题是关于链接Restful HTTP调用。当您调用第一个休息服务时,您将收到#[payload],然后您可以使用datamapper或dataweave将其转换为新格式。然后在转换后添加一个新的http端点,新的有效负载将作为调用的一部分进入,因为它在流程中跟随。您需要确保在两者上都适当地设置HTTP操作。

视觉上的骨架: Chain Skeleton

作为XML的骨架:

<http:request-config name="HTTP_Request_Configuration_1" host="localhost" port="8082" doc:name="HTTP Request Configuration"/>
    <http:request-config name="HTTP_Request_Configuration_2" host="localhost" port="8083" doc:name="HTTP Request Configuration"/>
    <flow name="chainFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/chain" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <http:request config-ref="HTTP_Request_Configuration_1" path="/path1" method="GET" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
}]]></dw:set-payload>
        </dw:transform-message>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <http:request config-ref="HTTP_Request_Configuration_2" path="/path2" method="POST" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    </flow>