[英]WSO2 ESB handle JSON Response with text/html header
我正在调用的 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 响应,我会很高兴。
不知道要为什么使用BinaryRelayBuilder消息生成器,应该考虑使用org.apache.synapse.commons.json.JsonStreamBuilder
或org.apache.synapse.commons.json.JsonBuilder
(请参阅JSON + Support )。
BinaryRelayBuilder的另一个解决方案是在中介中使用构建器中介器:
<builder>
<messageBuilder contentType="" class="" [formatterClass=""]/>
</builder>
就我而言,我正在调用一个返回 text/html 的端点,而 WSO2 在接收响应时抛出异常,因此我通过将以下条目添加到 conf/axis2/axis2.xml 来解决它,每个条目都在正确的部分:
<messageFormatter contentType="text/html"
class="org.apache.synapse.commons.json.JsonStreamFormatter"/>
<messageBuilder contentType="text/html"
class="org.apache.synapse.commons.json.JsonStreamBuilder"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.