Postman发送SOAP请求时,能否用JS拆分变量并包裹<arr:int>?
在Postman中处理SOAP请求的多值集合变量
实现方法(无需$xml)
直接通过Postman预请求脚本即可完成需求,步骤如下:
获取并拆分集合变量
先取出productId集合变量的值,按指定分隔符(比如逗号)拆分为数组:// 获取集合变量值,按逗号拆分并去除每个值的前后空格 const productIds = pm.collectionVariables.get("productId").split(",").map(id => id.trim());生成带标签的XML片段
遍历数组,为每个ID添加<arr:int>标签,再拼接成字符串:const xmlSegments = productIds.map(id => `<arr:int>${id}</arr:int>`).join("\n");替换请求体中的占位符
读取原始请求体内容,将{{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
相关产品推荐
相关产品推荐

