我无法在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 Message的Payload是键和值的映射
邮件有出站附件
生成请求正文 Content-Type:application / x-form-urlencoded每当消息 payload是Map,连接器自动生成HTTP 请求标题 内容类型:
application/x-www-form-urlencoded
。键和值 有效载荷中的映射转换为表单参数键和 HTTP请求正文中的值。
答案 0 :(得分:0)
您不需要为设置有效负载中的每个参数ei(用户名/密码/ api令牌)设置有效负载,您只需拥有要发布的内容,这在您的情况下是不需要的。 您需要在http请求中将(username / pwd / api token)设置为标头。 添加到上面三个中你可能还需要将Content-type设置为application / json,这取决于你的api。