JMeter中SOAP XML请求报400 Bad Request的原因排查求助
SOAP请求JMeter返回400 Bad Request的排查方向
- 请求头不匹配:Load Runner会自动带上服务端需要的HTTP头,比如
Content-Type: text/xml;charset=UTF-8、SOAPAction,JMeter如果没配置全就会报错。把Load Runner里的请求头全抄到JMeter的HTTP头管理器里,保证完全一致。 - XML格式或编码错误:XML里的特殊字符没转义、标签没闭合、命名空间写错,或者编码和服务端要求不匹配,都会触发400。对比Load Runner实际发送的XML,检查JMeter里的XML有没有格式问题,编码是否统一。
- 参数化出问题:如果用了参数化,JMeter里的参数值可能为空、格式不对,或者替换时把XML结构搞坏了。生成请求后看最终的XML内容,和Load Runner里的有效值比对。
- 请求方法选错:SOAP请求一般用POST,别在JMeter里选成GET,或者和服务端要求的请求方式不一致。
- SSL证书配置错误:HTTPS请求下,JMeter如果没正确信任服务端证书,或者证书配置有误,会被服务端拒绝。Load Runner可能已经处理了证书信任,要在JMeter里同步配置。
- 请求体长度异常:JMeter自动计算的
Content-Length可能出错,或者服务端对请求长度有严格限制。可以手动设置Content-Length头,确保数值准确。 - 录制请求丢失内容:如果是JMeter代理录制的请求,可能漏掉了SOAPAction头、XML节点这类关键内容。用抓包工具分别抓Load Runner和JMeter的请求,逐字节对比差异。
内容的提问来源于stack exchange,提问作者Yasir
相关产品推荐
相关产品推荐

