我正在调用的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响应,那将会很高兴。
答案 0 :(得分:0)
不确定您使用BinaryRelayBuilder消息构建器的原因,您应该考虑org.apache.synapse.commons.json.JsonStreamBuilder
或org.apache.synapse.commons.json.JsonBuilder
(请参阅JSON+Support)。
BinaryRelayBuilder的另一个解决方案是在中介中使用构建器介体:
<builder>
<messageBuilder contentType="" class="" [formatterClass=""]/>
</builder>