2014-09-19 71 views
0

我創建,你通過HTTP調用騾子服務的服務:騾子HTTP參數

<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8086" path="idnum" doc:name="HTTP"/> 

,所以如果你想調用這個服務你鍵入:

http://localhost:8086/idnum 

,但我想是的http接受一個id號碼作爲參數,然後將id號存儲到一個變量中,以便我可以使用id號。因此,HTTP會是什麼樣子:

http://localhost:8086/idnum/4583948364094 for example. 

所以我的問題是你如何從URL

回答

0

獲取參數,您需要把ID爲消息傳入參數如下。在騾子流,你需要做到以下幾點: -

在瀏覽器中訪問
<flow name="test"> 
    <http:inbound-endpoint exchange-pattern="request-response" 
          host="localhost" port="8086" 
          path="idnum" doc:name="HTTP"/> 
    <!-- storing id in variable myId --> 
    <set-variable variableName="myId" 
        value="#[message.inboundProperties['id']]" 
        doc:name="Variable"/> 
    <!-- Print the variable in console --> 
    <logger level="INFO" message="My id :- #[flowVars['myId']]"/>   
</flow> 

現在

http://localhost:8086/idnum/?id=4583948364094 
現在

,你可以將其存儲在騾子的變量,你可以看到它像一個記錄:

My id :- 4583948364094 
+0

嗨,你的回覆是非常讚賞。是否有任何可能的方式具有URL爲:http:// localhost:8086/idnum/4583948364094然後只檢索4583948364094作爲參數。然後將該ID號存儲到流var。 – 2014-09-19 11:12:07

+0

請看第一件事,這是作爲參數放置的方式,因爲它將存儲在消息入站屬性id(消息頭)中..如果使用localhost:8086/idnum/4583948364094,idnum/4583948364094將我視爲消息有效負載(消息體),您可能會得到值爲idnum/4583948364094,而不是隻是4583948364094 ..在這種情況下,您需要使用#[message.payload]而不是#[message.inboundProperties ['id' ]] ..你可以將message.payload中的值設爲idnum/4583948364094 ..所以你需要執行一些String函數,如message.payload上的substring().. – 2014-09-19 12:03:45

4

從騾子3.6病房,我們有HTTP Listener Connector,使用它你可以通過URI參數。

您可以訪問以下MEL

使用的URI參數

#[message.inboundProperties.'http.uri.params'.id]提供您的URI應該是這樣的:http://localhost:8086/idnum/ {ID}有

+0

現在URI參數自動設置爲'flowVars ',所以你可以簡單地使用'#[flowVars.id]'來訪問你的'id' URI參數 – Armando 2017-06-27 23:00:33