WSO2 ESB无法获取包含逗号的url参数

时间:2016-03-28 08:34:33

标签: wso2 wso2esb

在WSO2 ESB 490中,我编写了简单的API:

<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>

通过网址访问时效果很好:

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

和回复{“res_body”:“一个”}

但是当通过此URL访问时:

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

它没有响应,似乎ESB没有处理请求,因为参数“try = one,two”以逗号分隔。

如何让ESB处理此URL?(参数以逗号分隔)

2 个答案:

答案 0 :(得分:2)

AFAIK使用url params时需要使用%2C对逗号进行编码。 例如

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

答案 1 :(得分:1)

如果通过属性获取参数列表,您将获得带参数的%2C编码值。看看下面提到的工作示例。

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

如上所述逐一提取参数。