WSO2 ESB-从后端通过Tier时发送不需要的空JSON有效载荷



我是WSO2开发的新手,因此这对于某人来说很容易解决!

我正在创建一个演示API,以使自己更熟悉WSO2开发。目前,我坚持将ESB中的有效载荷从后端(使用Wiremock模拟(传递到另一个端点。我可以在ESB日志中看到有效载荷即将进入ESB,但它以0或我认为为空的内容。

我应该添加什么额外的东西吗?我只是将发送调解员放在开关语句中(检查HTTP状态,例如200(。我已经玩了一个payloadFactory,但也可以做同样的事情。

ESB日志:

TID: [0] [ESB] [2018-03-28 15:56:48,652] DEBUG {org.apache.synapse.transport.http.wire} -  >> "[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,652] DEBUG {org.apache.synapse.transport.http.wire} -  >> "{"result": 1}" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,699] DEBUG {org.apache.synapse.transport.http.wire} -  << "HTTP/1.1 200 OK[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "CorrelationId: 685454f5-e5f6-4837-b0b0-1e9e53798ea9[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Content-Type: application/json[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Date: Wed, 28 Mar 2018 14:56:48 GMT[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Server: WSO2-PassThrough-HTTP[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Transfer-Encoding: chunked[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Connection: Keep-Alive[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,701] DEBUG {org.apache.synapse.transport.http.wire} -  << "0[r][n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,701] DEBUG {org.apache.synapse.transport.http.wire} -  << "[r][n]" {org.apache.synapse.transport.http.wire}

JSON有效载荷从WireMock发送到ESB:

{"result": 1}

我在使用PAYLOADFACTORY的情况下玩耍,但是无论如何,我都得到了相同的结果。如果有帮助,我将包括我使用的payloadFactory代码:

<payloadFactory media-type="json">
<format>{"amount": $1}</format>
<args>
<arg evaluator="json" expression="$.result"/>
</args>
</payloadFactory>
<property name="messageType" value="application/json" scope="axis2"/>
<property name="contentType" value="application/json" scope="axis2"/>

任何帮助解决此问题或尝试的事物都将不胜感激!

尝试使用<arg evaluator="Xml" expression="//*[local-name()='result']"/>而不是<arg evaluator="json" expression="$.result"/>

i最后解决了这个问题。事实证明,我的Axis2.xml属性中的消息构建器之间的冲突是一场冲突,因此该消息永远不会正确构建。无论如何,感谢您的建议!

最新更新