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

WSO2 Micro Integrator处理application/ld+json响应报错排查

问题根因

报错Unexpected character in preface '{' (code 123); expected '<'的触发逻辑非常明确:

  • 你调用的后端接口返回的响应Content-Type为application/ld+json
  • WSO2默认没有为该Content-Type绑定JSON解析器,框架默认用XML解析器处理响应体
  • XML解析器读取内容时首先期望找到XML起始标记<,但实际响应是JSON格式,首字符是{,直接抛出解析错误

你之前做的两个尝试都没命中问题核心:

  • 移除TRANSPORT_HEADERS会清空所有请求头,直接导致依赖特定请求头的后端接口鉴权/校验失败,本身就是不可行的方案
  • 你配置的自定义消息构建器只匹配application/json类型,完全没覆盖实际返回的application/ld+json,所以配置加了也没用
修复步骤

1. 补全消息构建器、格式化器配置

首先修改deployment.toml,新增application/ld+json对应的JSON构建器和格式化器配置,替换你之前加的单条builder配置:

# 消息构建器配置
[[custom_message_builders]]
content_type = "application/json"
class = "org.apache.synapse.commons.json.JsonStreamBuilder"

[[custom_message_builders]]
content_type = "application/ld+json"
class = "org.apache.synapse.commons.json.JsonStreamBuilder"

# 消息格式化器配置(必须加,否则返回响应时会报格式错误)
[[custom_message_formatters]]
content_type = "application/json"
class = "org.apache.synapse.commons.json.JsonStreamFormatter"

[[custom_message_formatters]]
content_type = "application/ld+json"
class = "org.apache.synapse.commons.json.JsonStreamFormatter"

如果你是直接修改axis2.xml配置文件,分别在<messageBuilders>和<messageFormatters>节点下新增对应条目即可:

<!-- messageBuilders节点内新增 -->
<messageBuilder contentType="application/ld+json" 
                class="org.apache.synapse.commons.json.JsonStreamBuilder"/>

<!-- messageFormatters节点内新增 -->
<messageFormatter contentType="application/ld+json" 
                  class="org.apache.synapse.commons.json.JsonStreamFormatter"/>

配置修改完成后必须重启集成服务,否则配置不会加载生效。

2. 可选API配置优化

你当前的API配置里outSequence为空,为了避免上下文残留的消息类型干扰解析,可以在<call>组件之前加一行属性配置,不会影响你需要透传的自定义业务请求头:

<property name="messageType" scope="axis2" action="remove"/>

配置完成后,框架会根据后端实际返回的Content-Type自动选择对应解析器,你脚本里的mc.getPayloadJSON()就能正常读取到JSON-LD的内容,后续判断逻辑会正常执行。

验证

服务重启后重新发起Postman请求,不会再出现XML解析报错,接口会按照脚本逻辑返回{"s":"success"}或者{"s":"fail"}的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:24:12