为何JMeter验证SOAP XML时返回异常响应,SOAPUI却正常?
JMeter/LoadRunner中SOAP XML验证异常但SOAPUI正常的解决办法
问题现象
在JMeter或LoadRunner中回放SOAP请求时,返回的是服务创建提示页面内容而非预期的SOAP响应,具体响应如下:
#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}附带文本:XXX ServiceXXX Service
"您已创建一个服务。要测试此服务,您需要创建客户端并调用它。可使用命令行工具svcutil.exe,语法如下....."return (<BR/>)
但相同的SOAP请求在SOAPUI中运行完全正常。
排查及解决方法
1. 检查请求头配置
SOAPUI会自动添加符合SOAP规范的请求头,而JMeter/LoadRunner可能缺失关键配置:
- 确保添加
Content-Type: text/xml; charset=utf-8请求头 - 必须配置
SOAPAction头,值为对应服务操作的命名空间地址(可从WSDL或SOAPUI的请求中直接复制)
2. 验证请求URL正确性
确认JMeter/LoadRunner中的请求URL指向SOAP服务的端点地址,而非WSDL页面或服务默认展示页:
- 正确地址示例:
http://xxx.xxx.xxx/Service.svc - 避免使用带
?wsdl后缀的地址
3. 核对请求体格式
对比SOAPUI中的请求体,确保JMeter/LoadRunner中的XML内容完全一致:
- 检查XML命名空间拼写是否正确
- 确认参数值的格式、编码符合服务要求
- 移除请求体中多余的空格、换行或特殊字符
4. 统一身份验证配置
如果服务需要身份验证,确保JMeter/LoadRunner使用与SOAPUI相同的验证方式(如Basic Auth、NTLM等),并核对凭证信息无误。
5. 对齐网络环境配置
检查JMeter/LoadRunner的代理设置,确保与SOAPUI的网络环境一致:
- 若使用代理,需配置相同的代理地址、端口及认证信息
- 确认防火墙或安全软件未拦截JMeter/LoadRunner的请求
内容的提问来源于stack exchange,提问作者Yasir
相关产品推荐
相关产品推荐

