在wso2 esb中如何获得单个数字(整数)值

时间:2018-05-20 06:55:31

标签: wso2 wso2esb

在调用端点后的wso2 ESB中我得到的响应为数字(例如:78),标题为 application / json ,如果没有处理响应,如果我发送出来的顺序它可以正常工作#39;得到相同的回复。但是如果我在它之间加入任何调解器进行处理,就会抛出像这样的异常,无法保存JSON有效负载。找到无效的输入流。单个字符串或数字在某些情况下无效因此,它可能会抛出异常,但在wso2 EI 6.2中解决了此错误。

所以现在我能够处理响应,但如果我使用脚本中介来获取该值,则显示{}。如果我使用json-eval($。),那么我也无法获得该值,也使用xpath我无法得到。

那么如何通过使用脚本中介或使用json路径获得wso2 ei中进一步处理的响应(数量值)。

1 个答案:

答案 0 :(得分:1)

如果您确定响应仅包含带有application / json的content-type标头的数字。您可以将值转移到以下属性。

<property name="RESPONSE_NUMBER" expression="//jsonValue" scope="default" type="INTEGER"/>

当您在中介流程中的其他位置需要此值时,您可以从属性中获取值(在本例中为RESPONSE_NUMBER),如下所示。

$ctx:RESPONSE_NUMBER

以下是一个示例API,演示了如何获取响应值并在中介流中使用它。

<api xmlns="http://ws.apache.org/ns/synapse" name="SampleAPI" context="/getNumber">
   <resource methods="GET">
      <inSequence>
         <send>
            <endpoint>
               <http method="GET" uri-template="http://www.mocky.io/v2/5b02cc2c3000006600cee384"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <property name="RESPONSE_NUMBER" expression="//jsonValue" scope="default" type="INTEGER"/>
         <payloadFactory media-type="json">
            <format>{"Id": $1}</format>
            <args>
               <arg evaluator="xml" expression="$ctx:RESPONSE_NUMBER"/>
            </args>
         </payloadFactory>
         <send/>
      </outSequence>
   </resource>
</api>

您可以使用以下curl命令调用API:

curl -v http://localhost:8280/getNumber