2

我需要创建一个 mule 服务,它将数据发布到需要名称/值对(不是 xml)的 Web 服务,然后处理来自该服务的 XML 响应。我找不到一个关于如何为 http POST 准备有效负载的好例子。

有人可以提供一些见解或例子吗?

到目前为止我所拥有的是(我不知道是否需要'PathToTransformerClass'):

    <service name="myService">
        <inbound>
            <vm:inbound-endpoint path="myService.request" synchronous="true">
                <custom-transformer class="PathToTransformerClass" />
            </vm:inbound-endpoint>
        </inbound>
        <outbound>
            <pass-through-router>
                <http:outbound-endpoint address="URIofWebServiceToPostTo" method="POST" synchronous="true">
                    <response-transformers>
                        <custom-transformer class="PathToClassToProcessTheResponse" />
                    </response-transformers>
                </http:outbound-endpoint>
            </pass-through-router>
        </outbound>
    </service>
4

4 回答 4

4

以下内容可能会有所帮助:http ://comments.gmane.org/gmane.comp.java.mule.user/29342

我也找不到任何示例,但看起来内置的HTTP 转换器是

http-response-to-object-transformer 将 HTTP 响应转换为 Mule 消息的转换器。有效负载可以是字符串、流或字节数组。

http-response-to-string-transformer 将 HTTP 响应负载转换为字符串。响应的标头将保留在消息中。

object-to-http-request-transformer 这个转换器将使用当前消息和当前消息上设置的任何 HTTP 标头创建一个有效的 HTTP 请求。

message-to-http-response-transformer 此转换器将使用当前消息和当前消息上设置的任何 HTTP 标头创建有效的 HTTP 响应。

object-to-http-request-transformer 可能是你最好的选择;也许您可以创建一个键值对映射,然后将其转换为 URL 编码形式?不确定,但希望这能给 Google 带来一些帮助。

于 2010-07-31T03:54:52.857 回答
0

1)让variables=<map><entry><string>idEvent_Type</string><string>1</string></entry></map>&options=user:admin

是作为 HTTP 请求发布的地图主体。

2) URL 对其进行编码(例如,使用http://meyerweb.com/eric/tools/dencoder/

产生:

variables%3D%3Cmap%3E%3Centry%3E%3Cstring%3EidEvent_Type%3C%2Fstring%3E%3Cstring%3E1%3C%2Fstring%3E%3C%2Fentry%3E%3C%2Fmap%3E%26options%3Duser%3Aadmin

3)然后创建一个Mule set-payload transformer:

<set-payload value="variables%3D%3Cmap%3E%3Centry%3E%3Cstring%3EidEvent_Type%3C%2Fstring%3E%3Cstring%3E1%3C%2Fstring%3E%3C%2Fentry%3E%3C%2Fmap%3E%26options%3Duser%3Aadmin
" doc:name="Set playload"/>

4) 然后创建一个 Mule HTTP 端点:

<http:outbound-endpoint exchange-pattern="request-response" host="..." port="..." path="..." user="..." password="..." contentType="application/x-www-form-urlencoded" doc:name="POSTHTTPRequest"/>

它有效

于 2013-03-18T16:35:53.560 回答
0

您是否在询问如何获取 XML 并创建键值对以通过 HTTP 发送出去?为此,您可以使用 XLST 转换器,在 XSL 中您将方法输出设置为文本。

于 2010-07-29T20:41:12.033 回答
0

也许你可以尝试使用 Object-to-http-request-transformer,因为这个转换器将使用当前收到的消息和当前消息上设置的任何 HTTP 标头创建一个有效的 HTTP 请求。从未尝试过,但这是我在阅读您的查询后能想到的唯一转换器……希望它有效……:D

于 2016-05-03T04:35:53.023 回答