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

Java SMS类请求体被text键包裹的原因及WSO2 EI修复方案

请求体被"text"键包裹的原因及修复方案

原因分析

  • 你的Java SMS类发送请求时,未正确将Java对象序列化为JSON请求体,反而把生成的JSON字符串当作普通文本,被封装成了带"text"键的外层JSON结构。常见诱因:
    • 序列化逻辑错误:先把目标对象转为JSON字符串,再通过HTTP客户端工具将这个字符串作为"text"字段的值二次序列化。
    • 请求头配置错误:HTTP请求的Content-Type未设置为application/json,误设为text/plain,触发部分框架或网关的默认包装行为,将请求体套入"text"键中。

修复方案

  • 修正序列化逻辑:直接将RequestData对应的Java对象序列化为JSON字节流,避免二次封装。例如用Jackson时:
    ObjectMapper objectMapper = new ObjectMapper();
    RequestData requestData = new RequestData();
    // 填充requestData的属性值
    String jsonBody = objectMapper.writeValueAsString(requestData);
    // 将jsonBody直接作为请求体发送
    
  • 配置正确的请求头:确保HTTP请求的Content-Type设为application/json。以Apache HttpClient为例:
    HttpPost postRequest = new HttpPost("你的WSO2 EI API地址");
    postRequest.setHeader("Content-Type", "application/json");
    StringEntity requestEntity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);
    postRequest.setEntity(requestEntity);
    
  • 检查WSO2 EI侧配置:若确认客户端发送的是标准JSON,排查API的中介规则,是否存在强制转换请求格式的配置(比如<property name="messageType" value="text/plain"/>),这类配置会导致网关自动将请求体封装为text字段,需调整为application/json。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:25:03