WSO2 ESB使用text / html标头处理JSON Response

时间:2017-12-22 06:05:56

标签: json wso2esb

我正在调用的REST API正在返回带有text / html标头的JSON消息(我知道它非常蹩脚)。

我已经在carbon.xml中启用了构建器,以便处理传入的响应。

<messageBuilder contentType="text/html" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

如果响应是XML,我可以执行xpath base64解码并获取响应并对其进行处理。

因为JSON格式的响应我得到了以下错误,即使我得到它的二进制值。

预期的JSON消息 - {"message":"Success!","result":"logadded","status":3,"response_code":200}

收到二进制文件 - CgoJeyJtZXNzYWdlIjoiU3VjY2VzcyEiLCJyZXN1bHQiOiJsb2cgYWRkZWQiLCJzdGF0dXMiOjMsInJlc3BvbnNlX2NvZGUiOjIwMH0

TID: [-1234] [] [2017-12-22 08:58:49,788] ERROR {org.apache.synapse.mediators.base.SequenceMediator} -  com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1] {org.apache.synapse.mediators.base.SequenceMediator}
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)

如果有人可以帮助我获得JSON响应,那将会很高兴。

1 个答案:

答案 0 :(得分:0)

不确定您使用BinaryRelayBuilder消息构建器的原因,您应该考虑org.apache.synapse.commons.json.JsonStreamBuilderorg.apache.synapse.commons.json.JsonBuilder(请参阅JSON+Support)。

BinaryRelayBuilder的另一个解决方案是在中介中使用构建器介体:

<builder>
    <messageBuilder contentType="" class="" [formatterClass=""]/>
</builder>