简体   繁体   English

WSO2 ESB-从后端经过层时发送不需要的空JSON有效负载

[英]WSO2 ESB - sending unwanted empty JSON payload when passing through tier from backend

I am very new to WSO2 development so this could be an easy fix for someone! 我对WSO2开发非常陌生,因此对于某些人来说这很容易解决!

I'm creating a demo API to familiarise myself more with WSO2 development. 我正在创建一个演示API,以使自己更加熟悉WSO2开发。 I'm currently stuck with passing a payload in ESB from a back-end (mocked using Wiremock) to another endpoint. 我目前一直坚持将ESB中的有效负载从后端(使用Wiremock模拟)传递到另一个端点。 I can see in the ESB logs that the payload is coming into ESB but it leaves as 0 or what I presume as empty. 我可以在ESB日志中看到有效负载正在进入ESB,但它保留为0或我认为是空的。

Is there anything extra I should add? 我还有什么需要补充的吗? I'm just placing a send mediator within a switch statement (checking for HTTP status eg 200). 我只是将发送中介程序放在switch语句中(检查HTTP状态,例如200)。 I've played around with a payloadFactory but it does the same. 我玩过payloadFactory,但它的作用相同。

ESB log: 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 Payload sent from wiremock to ESB: 从Wiremock发送到ESB的JSON有效负载:

{"result": 1}

I played around with using a payloadFactory but I got the same result regardless. 我使用了payloadFactory进行测试,但是无论如何我都得到了相同的结果。 I'll include the payloadFactory code I used if it helps: 如果有帮助,我将包括我使用的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"/>

Any help to solving this or things to try will be much appreciated! 任何帮助解决这个问题或尝试的事情将不胜感激!

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

I solved this in the end. 我最终解决了这个问题。 Turned out to be a conflict between message builders in my axis2.xml properties so the message was never getting built correctly. 原来是我axis2.xml属性中的消息生成器之间存在冲突,因此消息从未正确构建。 Thanks for the suggestions anyway! 无论如何,谢谢您的建议!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM