2016-05-04 37 views
0

我從Anypoint Studio中生成POST消息出現故障:發送HTTP請求時出錯。消息負載的類型爲:HashMap的

我試圖做到的是一個POST發送到我們的Kykloud API端點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> 

理論上的反應應該是一些JSON與塞西onId對象。

我所實際接收的郵遞員:

Error sending HTTP request. Message payload is of type: HashMap 

很顯然,我做錯了什麼定義我的有效載荷,但他們對這個文檔不是如何做正確的方式明確:

HTTP請求正文Mule消息負載被轉換爲字節 數組並作爲HTTP請求的主體發送。這種行爲進行 了始終,除了在以下情形:

騾子信息的有效載荷是一個Map鍵和值

消息已經傳出附件

生成與 內容 - 請求正文類型:application/x-form-urlencoded只要消息 有效負載是Map,連接器就會自動生成HTTP 請求,並且標頭爲 Content-Type:application/x-www-form-urlencoded。有效載荷中的映射的鍵和值 被轉換爲HTTP請求的主體中的形式參數鍵和值。

+0

它表示有效載荷是鍵和值的映射。你有一個HashMap。儘管它們相似,但它們並不完全相同。在運行你的代碼發送消息之前,把你的散列表轉換成一個Map map2 = myHashMap;' – MattCorr

+0

@MattCorr我應該說,這是我第一天使用這個產品,我不知道如何在xml中執行此操作。 – Marco

回答

0

你不需要爲每個集有效載荷參數EI(用戶名/密碼/ API令牌)的做了一套有效載荷,你只會有你想要發佈未在你的情況需要內容。 您需要在您的http請求中設置(username/pwd/api token)作爲標題。 添加到上面的三個你可能還需要設置內容類型爲應用程序/ JSON這取決於你的API。

+0

這是錯誤的。 Kykloud要求這些kvps。 – Marco

+0

然後嘗試將所有3個鍵值一起設置爲一個集合有效載荷。您正在做的事情最終會覆蓋有效載荷,那也不行。 – scorpion

+0

我嘗試了所有可能的組合。由於我們所有人都無法做到這一點,我們現在只是放棄了Mulesoft。 – Marco

相關問題