Content-Type 必须设为 application/xml,Body 选 raw+Text,显式声明 UTF-8 编码及完整命名空间;SOAP 请求还需严格匹配 WSDL 中的 SOAPAction 值。

Content-Type 必须设为 application/xml,不是 text/xml 或自动推断
绝大多数现代 XML 接口(尤其是 RESTful 风格)明确要求 Content-Type: application/xml。Postman 不会自动识别你粘贴的 XML 内容并补全头,必须手动添加——漏掉或写错就会返回 415 Unsupported Media Type。
常见错误现象:
-
Content-Type留空 → 服务端当text/plain处理,直接拒收 - 填成
text/xml→ 部分 Spring Boot 或 Node.js 服务严格校验,返回 400 - 用 Postman 的 “XML” 下拉选项 → 它会悄悄加 BOM 或格式化换行,导致解析失败
正确做法:在 Headers 标签页中,手动添加一行:
Key:Content-Type
Value:application/xml
Body 必须选 raw + Text,不是 XML 模式
Postman 的 Body 右上角下拉菜单里选 XML,看似合理,实则危险:它会强制注入 声明,且可能添加不可见 BOM 或缩进,而很多后端 XML 解析器(如 Java 的 JAXB、.NET 的 XmlSerializer)对开头空白或编码声明极其敏感。
安全做法:
- Body 选
raw - 下拉菜单固定选
Text(不是 Auto-detect,不是 XML) - 直接粘贴原始 XML 字符串,例如:
<user><id>123</id><name>张三</name></user>
- 确保文件本身是 UTF-8 无 BOM 编码(用 VS Code 或 Notepad++ 检查)
SOAP 请求额外要加 SOAPAction 头,且值必须严格匹配 WSDL
调用传统 SOAP 接口时,仅设 Content-Type 远远不够。SOAPAction 是一个强制请求头,老系统(如 .NET ASMX、Java Axis)靠它路由到具体方法。不填、填错、大小写/协议不一致,都会返回 500 Internal Server Error 或静默失败。
查法很直接:
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 打开你的 WSDL 地址(如
https://api.example.com/service.asmx?wsdl) - 搜索
,找到对应接口的 soapAction属性值 - 在 Headers 中添加:
Key:SOAPAction
Value:"http://tempuri.org/GetUser"(注意引号必须保留,值要和 WSDL 里一模一样)
如果 WSDL 里写的是 soapAction="",那 Value 就填空字符串 "",不能删掉这一行。
中文或带命名空间的 XML,编码和命名空间声明必须显式写出
只要 XML 里含中文、emoji 或非 ASCII 字符,就必须在第一行显式声明编码,否则服务端大概率报 org.xml.sax.SAXParseException: Invalid byte 2 of 3-byte UTF-8 sequence。
正确开头必须是:
<?xml version="1.0" encoding="UTF-8"?>
命名空间也一样:比如调用 SOAP, 必须带完整 xmlns 声明,少一个属性(如 xmlns:xsi)就可能被拒绝:
<envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"></envelope>
别依赖 Postman 自动补全——它不会帮你检查 WSDL 要求的命名空间是否齐全。










