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

Postman发送SOAP请求时,能否用JS拆分变量并包裹<arr:int>?

在Postman中处理SOAP请求的多值集合变量

实现方法(无需$xml)

直接通过Postman预请求脚本即可完成需求,步骤如下:

  1. 获取并拆分集合变量
    先取出productId集合变量的值,按指定分隔符(比如逗号)拆分为数组:

    // 获取集合变量值,按逗号拆分并去除每个值的前后空格
    const productIds = pm.collectionVariables.get("productId").split(",").map(id => id.trim());
    
  2. 生成带标签的XML片段
    遍历数组,为每个ID添加<arr:int>标签,再拼接成字符串:

    const xmlSegments = productIds.map(id => `<arr:int>${id}</arr:int>`).join("\n");
    
  3. 替换请求体中的占位符
    读取原始请求体内容,将{{productId}}替换为生成的XML片段,再更新请求体:

    let requestBody = pm.request.body.raw;
    requestBody = requestBody.replace("{{productId}}", xmlSegments);
    pm.request.body.raw = requestBody;
    

关于$xml方案的说明

你提到的旧帖子中的$xml方案,现在已不是Postman场景下的最优选择:

  • 该方案依赖特定SOAP库的实现,而Postman原生预脚本用纯JavaScript就能完成需求,无需额外依赖
  • 面对数量不固定的变量值,纯JS的数组遍历+字符串拼接方式更灵活,能自适应任意数量的ID值

完整预请求脚本示例

整合后的完整脚本如下,直接粘贴到请求的「Pre-request Script」标签页即可:

// 获取集合变量并拆分
const productIdStr = pm.collectionVariables.get("productId");
const productIds = productIdStr.split(",").map(id => id.trim());

// 生成带标签的XML片段
const wrappedIds = productIds.map(id => `<arr:int>${id}</arr:int>`).join("\n");

// 更新请求体内容
let rawBody = pm.request.body.raw;
rawBody = rawBody.replace("{{productId}}", wrappedIds);
pm.request.body.raw = rawBody;

注意事项

  • 确保集合变量productId的值为逗号分隔的字符串(例如123,456,789)
  • 若使用其他分隔符,修改split(",")中的参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:53:26