我需要创建一个mule服务,将数据POST到需要名称/值对(而不是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>
答案 0 :(得分:4)
以下内容可能会有所帮助:http://comments.gmane.org/gmane.comp.java.mule.user/29342
我也找不到任何示例,但看起来内置的HTTP transformers是
http-response-to-object-transformer A 转换HTTP的转换器 回应骡子消息。该 payload可以是String,stream或 字节数组。
HTTP的响应到字符串变压器 转换HTTP响应有效负载 成一个字符串。的标题 回复将保留在 消息。
对象至http请求变压器 这个变压器会创建一个有效的 使用当前消息的HTTP请求 和任何HTTP标头设置 当前消息。
消息到HTTP的响应变压器 这个变压器会创建一个有效的 使用当前的HTTP响应 消息和任何HTTP标头设置 当前的消息。
对象到http-request-transformer可能是你最好的选择;也许你可以创建一个键值对的映射,然后将其转换为URL编码形式?不确定,但希望这会给你一些谷歌的东西。
答案 1 :(得分:0)
您是否在询问如何使用XML并创建通过HTTP发送的密钥值对?为此,您可以使用XLST转换器,在XSL中将方法输出设置为文本。
答案 2 :(得分:0)
1)让variables=<map><entry><string>idEvent_Type</string><string>1</string></entry></map>&options=user:admin
将Map主体发布为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转换器:
<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"/>
并且有效
答案 3 :(得分:0)
也许U可以尝试使用Object-to-http-request-transformer,因为此转换器将使用当前接收的消息和当前消息上设置的任何HTTP头创建有效的HTTP请求。 从来没有尝试过,但这是我阅读你的查询后我能想到的唯一变形...希望它有效..:D