【发布时间】:2016-05-04 12:46:50
【问题描述】:
我无法从 Anypoint Studio 中生成 POST 消息:
我想要完成的是向我们的 Kykloud api 端点发送一个 POST,其中包含 3 个键值对作为有效负载,作为 x-www-form-urlencoded 内容。
这是当前的视觉设置:
(旁注:我知道在普通视图中存储机密和登录数据是不好的做法。我稍后会尝试弄清楚如何正确执行此操作)
适当的 XML 如下所示:
<flow name="LoginFlow">
<set-payload value="#[['ApiToken': 'xxxXXXxxxXXXxxxXXX']]" doc:name="Set ApiToken"/>
<set-payload value="#[['Email':'serv[at]someaddress.com']]" doc:name="Set Email"/>
<set-payload value="#[['Password':'VeryLongPenis']]" doc:name="Set Password"/>
<http:request config-ref="KyklouConnectorns" path="/api/v2/sessions?format=json" method="POST" doc:name="Login to Kykloud" port="80" />
<logger level="INFO" message="SessionId is #[message.payload.'SessionId']" doc:name="Logger"></logger>
</flow>
理论上,响应应该是一些带有 SessionId 对象的 JSON。
我在 POSTMAN 中实际收到的是:
Error sending HTTP request. Message payload is of type: HashMap
显然我在定义我的有效载荷时做错了,但他们的文档并不清楚如何以正确的方式做到这一点:
HTTP 请求正文 Mule 消息负载被转换为一个字节 数组并作为 HTTP 请求的正文发送。这种行为被携带 总是出局,但以下情况除外:
Mule 消息的有效负载是键和值的映射
邮件有出站附件
生成请求正文 Content-Type:application/x-form-urlencoded 每当消息 payload 是一个 Map,连接器会自动生成一个 HTTP 带有标头的请求 内容类型:
application/x-www-form-urlencoded。键和值 有效载荷中的映射转换为表单参数键和 HTTP 请求正文中的值。
【问题讨论】:
-
它表示有效负载是键和值的映射。你有一个HashMap。虽然它们相似,但它们并不完全相同。在运行代码以发送消息之前,请将您的 hashmap 转换为带有
Map<String, Object> map2 = myHashMap;的映射 -
@MattCorr 我应该声明,这是我使用该产品的第一天,我不知道如何在 xml 中执行此操作。
标签: java flow anypoint-studio