为什么wso2中的响应很奇怪

为什么wso2中的响应很奇怪,wso2,wso2esb,Wso2,Wso2esb,我用邮递员来测试 没关系!它返回消息: { "status": "STARTED", "result": { "jobId": "3a47f931-f040-4e4a-a688-331f1918ae82", "context": "6a171d9d-com.mymoon.sql.SparkJoin" } } 它的http状态是202 我在wso2 esb中配置并返回一些消息,但浏览显示的是混合消息!是斯坦奇 配置为: <api xmlns="http://ws

我用邮递员来测试 没关系!它返回消息:

{
  "status": "STARTED",
  "result": {
    "jobId": "3a47f931-f040-4e4a-a688-331f1918ae82",
    "context": "6a171d9d-com.mymoon.sql.SparkJoin"
  }
}
它的http状态是202

我在wso2 esb中配置并返回一些消息,但浏览显示的是混合消息!是斯坦奇

配置为:

<api xmlns="http://ws.apache.org/ns/synapse" name="d" context="/dd">
   <resource methods="GET" uri-template="/submit">
      <inSequence>
         <log level="full"/>
         <payloadFactory media-type="text">
            <format>{"uuid":"201456541","table": "aa/aa_table","condition":"names|91194185"}</format>
            <args/>
         </payloadFactory>
         <send>
            <endpoint>
               <http method="POST" uri-template="http://192.168.1.208:8090/jobs?appName=CU&amp;classPath=com.mymoon.ses.SparkCount"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full">
            <property name="asdfsadf" expression="json-eval($.)"/>
         </log>
         <payloadFactory media-type="text">
            <format>{"jobId":"$1", "table":"$2"}</format>
            <args>
               <arg evaluator="json" expression="$.result.jobId"/>
               <arg value="test"/>
            </args>
         </payloadFactory>
         <send/>
      </outSequence>
   </resource>
</api>
我希望传达的信息是:

{"jobId":"548e9590-e442-439f-9234-223bf5bf669e", "table":"test"} 

所以我很困惑!帮助我!谢谢

我已经使用ESB 4.8.0进行了测试。我修改了你的API代码如下。我使用模拟服务及其工作原理进行了测试。我所做的唯一更改是从文本更改媒体类型json

<api xmlns="http://ws.apache.org/ns/synapse" name="d" context="/dd">
   <resource methods="GET" uri-template="/submit">
      <inSequence>
         <log level="full"></log>
         <payloadFactory media-type="json">
            <format>{"uuid":"201456541",   "table": "aa/aa_table",   "condition":"names|91194185"   }</format>
            <args></args>
         </payloadFactory>
         <send>
            <endpoint>
               <http method="post" uri-template="http://demo2965385.mockable.io/test"></http>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full">
            <property name="asdfsadf" expression="json-eval($.)"></property>
         </log>
         <payloadFactory media-type="json">
            <format>{"jobId":"$1", "table":"$2"}</format>
            <args>
               <arg evaluator="json" expression="$.result.jobId"></arg>
               <arg value="test"></arg>
            </args>
         </payloadFactory>
         <send></send>
      </outSequence>
   </resource>
</api>

我在ESB4.9.0(后端:SoapUI)上测试了您的配置,它返回了正确的响应。您使用的esb版本是什么?您在esb控制台中看到了什么?我也使用esb 4.9.0。一般来说,测试其他服务没有问题。但是我测试了spark job的休息服务,它有一个问题。在esb的响应中,我不使用$。获取数据,它没有问题。如果我用美元。要获取响应数据,需要执行以下操作。所以我怀疑它是否与http状态202有关。另一件奇怪的事情是我使用了first$。要获取josn对象,它为null。但是第二个是好的!真奇怪!!!!文本和json都可以!我认为区别在于终点。我的后端服务返回202状态。我认为这是一个问题。但是我可以直接从浏览器中得到正确的结果。所以我认为esb中可能存在问题。No 202不是问题。我也用202进行了测试。但是,由于您试图使用send mediator发送REST调用,因此如果您在代理之后,最好使用以下属性
,这非常重要。我测试该属性,但它没有用处。它没有代理。我在响应中添加了js脚本。*payload=mc.getPayloadJSON();var total=有效载荷.result.jobId;mc.setPayloadJSON({“total”:total});*。我发现有效负载为空。问题是我们无法重现您的问题。这对我来说很好。如果你能分享你的完整API代码+后端发送的响应。这样我就可以模拟你的服务并修复你的代码(如果有的话)。
<api xmlns="http://ws.apache.org/ns/synapse" name="d" context="/dd">
   <resource methods="GET" uri-template="/submit">
      <inSequence>
         <log level="full"></log>
         <payloadFactory media-type="json">
            <format>{"uuid":"201456541",   "table": "aa/aa_table",   "condition":"names|91194185"   }</format>
            <args></args>
         </payloadFactory>
         <send>
            <endpoint>
               <http method="post" uri-template="http://demo2965385.mockable.io/test"></http>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full">
            <property name="asdfsadf" expression="json-eval($.)"></property>
         </log>
         <payloadFactory media-type="json">
            <format>{"jobId":"$1", "table":"$2"}</format>
            <args>
               <arg evaluator="json" expression="$.result.jobId"></arg>
               <arg value="test"></arg>
            </args>
         </payloadFactory>
         <send></send>
      </outSequence>
   </resource>
</api>
{
  "jobId": "3a47f931-f040-4e4a-a688-331f1918ae82",
  "table": "test"
}