You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WSO2 ESB中如何将text/html转为application/json并获取正常JSON数据

解决WSO2 ESB中text/html响应转正常JSON的问题

你遇到的这个情况我之前也碰到过——直接修改messageType和ContentType后得到二进制数据,是因为WSO2 ESB把整个text/html格式的响应当成了二进制内容处理,并没有自动解析里面包裹的JSON。要解决这个问题,得先把HTML标签里的JSON提取出来,再设置正确的消息类型,具体步骤如下:

步骤1:提取HTML中的JSON内容

原始响应是被<pre><code>标签包裹的JSON,我们需要先把这部分纯JSON字符串提取出来。推荐用正则表达式Mediator来做这件事,配置如下:

<regex>
    <pattern><![CDATA[<pre><code>(.*?)</code></pre>]]></pattern>
    <group>1</group>
    <action>replace</action>
    <target>body</target>
</regex>

这个配置会匹配<pre><code>和</code></pre>之间的内容,并用匹配到的纯JSON字符串替换整个消息体。

步骤2:设置正确的消息类型

提取出纯JSON后,再设置消息头属性,让ESB识别这是JSON格式:

<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<property name="ContentType" scope="axis2" type="STRING" value="application/json"/>

替代方案:用XSLT Mediator提取

如果你更习惯用XSLT,也可以写一个简单的XSLT脚本提取JSON内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:value-of select="//pre/code/text()"/>
    </xsl:template>
</xsl:stylesheet>

然后用XSLT Mediator引用这个脚本,之后再设置消息类型属性即可。

这样处理后,你就能得到正常的{"success":true,"data":"1234"} JSON响应了。

内容的提问来源于stack exchange,提问作者ashok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:00:07