发送HTTP请求时出错。消息有效内容的类型为:HashMap

时间:2016-05-04 12:46:51

标签: java flow anypoint-studio

我无法在Anypoint Studio中生成POST消息:

我想要完成的是向我们的Kykloud api端点发送一个POST,其中包含3个键值对作为x-www-form-urlencoded内容的有效负载。

这是当前的视觉设置:

enter image description here

(旁注:我知道以简单的视图存储机密和登录数据的不良做法。我将在稍后试图弄清楚如何正确地执行此操作)

适当的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请求正文中的值。

1 个答案:

答案 0 :(得分:0)

您不需要为设置有效负载中的每个参数ei(用户名/密码/ api令牌)设置有效负载,您只需拥有要发布的内容,这在您的情况下是不需要的您需要在http请求中将(username / pwd / api token)设置为标头。 添加到上面三个中你可能还需要将Content-type设置为application / json,这取决于你的api。