Postman调用SOAP接口失败主因是SOAPAction头、Content-Type值、XML命名空间三者之一与WSDL不一致;需严格匹配SOAPAction值(含引号/空字符串)、设Content-Type为text/xml或application/soap+xml、Body选raw并手动设XML格式、根节点声明正确命名空间、URL填endpoint而非WSDL地址。

Postman 调用 SOAP 接口不是“能不能”的问题,而是“哪几处不配对就直接失败”的问题。90% 的失败请求,卡在 SOAPAction 头、Content-Type 值、或 XML 命名空间三者之一与 WSDL 不一致。
SOAP 请求必须填对的三个关键 Header
老系统(尤其是 .NET ASMX、Java Axis、SAP PI)几乎全部强制校验这三个字段,漏一个或写错格式,服务端大概率返回 500 或静默丢弃。
-
Content-Type必须显式设为text/xml; charset=utf-8(SOAP 1.1)或application/soap+xml; charset=utf-8(SOAP 1.2)。Postman 默认加的application/xml无效,得手动删掉再新建一行 -
SOAPAction值必须和 WSDL 中对应标签的soapAction属性完全一致——包括引号、空格、协议头(http://还是https://)、末尾斜杠。比如 WSDL 里写的是soapAction="http://tempuri.org/GetData",Header 就得填"http://tempuri.org/GetData"(引号不能少) - 如果 WSDL 里
soapAction="",Header 值就得是""(空字符串),不是留空、不是删掉这一行、也不是填" "
Body raw 必须选 XML,且第一行不能空
Postman 不会自动识别 XML 内容,必须人工指定格式。选错会导致服务端解析器直接拒收,报 400 或 415。
- Body →
raw→ 右上角下拉菜单必须手动选XML(即application/xml),不能选Text或Auto - XML 内容必须以
开头,且这行前面不能有空行、空格或 BOM 字符 - 根节点必须是
,且必须声明命名空间:xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"。WSDL 中的targetNamespace得作为子命名空间加在外层,比如xmlns:web="http://example.com/service" - 别把 WSDL 文件里的
或段落直接复制进 Body——那是定义,不是调用
URL 不能填 WSDL 地址,得填真正的 endpoint
浏览器打开 WSDL 地址后,搜索 ,里面那个 URL 才是 POST 目标。填错就会 404。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 常见错误:把
http://example.com/service?wsdl当成请求地址,实际 endpoint 往往是http://example.com/service或http://example.com/axis2/services/Service - 有些 WSDL 里
location是相对路径(如/service),得拼到基础域名后面;还有些带 query 参数(如?wsdl),这些参数一律去掉 - 如果 WSDL 里没找到
,说明它用了动态绑定或需要额外配置,这时候得查服务文档或抓包看真实请求发往哪
怎么快速验证 XML 结构是否合法
不用等发出去再看 500 —— 在发送前就能发现大部分结构错误。
- 用浏览器打开 WSDL,搜索你要调的方法名(比如
GetUser),定位到对应的消息定义,再顺着找到实际的定义,那里写了参数名、是否可选、嵌套层级 - XML 中所有标签名、命名空间前缀、层级关系,必须和 WSDL 里
下的 XSD 定义严格一致。大小写敏感,userId和UserID是两个东西 - 可选字段(WSDL 注释里标了
)可以删掉整段,但别只删值留空标签;必填字段缺一个,服务端通常直接 500 - 如果服务返回
Invalid XML或Unexpected element,八成是某个标签的命名空间没加,或者前缀和xmlns:声明对不上
最易被忽略的一点:WSDL 里同一个方法可能在多个 下重复定义,分别对应 SOAP 1.1 和 1.2。你得确认自己用的是哪个 binding,再决定用 text/xml 还是 application/soap+xml,否则连请求都发不出去。










