JMeter调用SOAP请求时Header Manager中SOAPAction不生效问题咨询
JMeter SOAP请求配置SOAPAction后仍报「No Action header was found with namespace」解决方案
- 检查使用的采样器类型:优先使用JMeter自带的 SOAP/XML-RPC Request 采样器发送SOAP请求,避免使用普通HTTP请求采样器的默认逻辑导致的头信息处理异常。
- 补全SOAP报文中的Action节点:开启了WS-Addressing规范的SOAP服务,除请求头的SOAPAction外,还要求在XML报文中嵌入Action信息,SOAPUI会自动补全该节点,JMeter需要手动在SOAP报文中添加对应Header节点,示例结构如下(前缀和命名空间需和目标服务要求一致):
<soap:Header> <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">你的实际SOAPAction值</wsa:Action> </soap:Header>
- 校验Content-Type配置:SOAP版本不同对应的Content-Type规则不同,SOAPUI会自动适配,JMeter需要手动配置:
- SOAP 1.1:Content-Type值为
text/xml;charset=utf-8,单独配置SOAPAction请求头即可 - SOAP 1.2:规范已废弃单独的SOAPAction头,需要将action值拼接在Content-Type中,值为
application/soap+xml;charset=utf-8;action=你的实际SOAPAction值
- SOAP 1.1:Content-Type值为
- 检查Header Manager作用域:确保配置SOAPAction的Header Manager作用范围覆盖目标请求,没有被更高层级的Header Manager覆盖,也没有和请求存在层级隔离。
- 对比请求报文差异:开启JMeter请求调试日志,在
jmeter.properties中配置log_level.jmeter.protocol.http=DEBUG,导出JMeter发送的完整请求头、报文,和SOAPUI的正常请求做逐字段对比,排查是否存在头字段大小写、拼写、顺序差异,部分服务对Header字段大小写敏感。
内容的提问来源于stack exchange,提问作者Prateek
相关产品推荐
相关产品推荐

