2016-03-28 51 views
1

在WSO2 ESB 490我已經寫了簡單的API:WSO2 ESB無法獲取URL參數包含逗號

<api xmlns="http://ws.apache.org/ns/synapse" name="paramsTest" context="/params"> 
 
    <resource methods="GET" uri-template="/p?try={params_list}"> 
 
     <inSequence> 
 
     <property name="params_list" expression="get-property('uri.var.params_list')"/> 
 
     <log level="full"> 
 
      <property name="The input params : " expression="get-property('params_list')"/> 
 
     </log> 
 
     <payloadFactory media-type="json"> 
 
      <format>{"res_body":"$1"}</format> 
 
      <args> 
 
       <arg evaluator="xml" expression="get-property('params_list')"/> 
 
      </args> 
 
     </payloadFactory> 
 
     <respond/> 
 
     </inSequence> 
 
    </resource> 
 
</api>

它正常工作時,通過URL訪問:

http://localhost:8290/params/p?try=one

和響應{ 「res_body」: 「一」}

但是,當這個URL訪問:

http://localhost:8290/params/p?try=one,two

它響應什麼,似乎ESB沒有處理請求因爲參數「try = one,two」用逗號分開。

如何讓ESB處理這個網址是什麼?(參數由逗號分隔)

+2

你可以試一下%2Ctwo –

+0

非常感謝,它可以工作。這是否意味着我們應該建議用戶在每次通話時對其URL進行編碼? – yeahliu

+0

是的。我認爲你需要用%2c來編碼逗號 –

回答

2

據我所知,你需要用網址參數使用時,該用逗號%2C編碼。 例如

http://localhost:8290/params/p?try=one%2Ctwo 
1

如果通過屬性獲取參數列表,您將獲得具有參數的%2C編碼值。看看下面提到的工作示例。

<resource methods="POST" uri-template="?sessionId={id}"> 
     <inSequence> 
     <property name="sessionId" expression="$url:sessionId"/> 

如上所述一個接一個地提取參數。