在调用端点后的wso2 ESB中我得到的响应为数字(例如:78),标题为 application / json ,如果没有处理响应,如果我发送出来的顺序它可以正常工作#39;得到相同的回复。但是如果我在它之间加入任何调解器进行处理,就会抛出像这样的异常,无法保存JSON有效负载。找到无效的输入流。单个字符串或数字在某些情况下无效因此,它可能会抛出异常,但在wso2 EI 6.2中解决了此错误。
所以现在我能够处理响应,但如果我使用脚本中介来获取该值,则显示{}
。如果我使用json-eval($。),那么我也无法获得该值,也使用xpath我无法得到。
那么如何通过使用脚本中介或使用json路径获得wso2 ei中进一步处理的响应(数量值)。
答案 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