JMeter如何从响应头提取x-nonce值并传递给后续API使用
JMeter提取响应头x-nonce并跨接口传递的操作方法
响应头x-nonce提取配置
优先使用正则表达式提取器实现,兼容性最好,操作步骤如下:
- 选中返回x-nonce字段的接口请求,右键依次选择【添加】→【后置处理器】→【正则表达式提取器】
- 按如下规则配置提取器参数:
- 要检查的响应字段:勾选响应头,注意不要误选响应体,否则无法提取到头字段内容
- 引用名称:自定义变量名,例如填
x_nonce,后续传参直接引用该变量即可 - 正则表达式:填
(?i)x-nonce: (.*?)(\n|$),其中(?i)表示不区分大小写匹配,兼容服务端返回X-Nonce/x-nonce等不同大小写格式的情况,(\n|$)表示匹配到换行或者响应头结束位置为止,括号内捕获的就是目标x-nonce值 - 模板:填
$1$,表示取第一个正则捕获组的内容 - 匹配数字:填
1,表示取第一个匹配结果(正常响应头中x-nonce仅会出现1次) - 缺省值:可填
NONCE_EXTRACT_FAIL,调试阶段如果看到参数传值为该字符串,可直接判定提取规则配置错误,缩短排查时间
- 如果不想写正则,也可以选择边界提取器,配置逻辑更简单:同样选择检查响应头字段,左边界填
x-nonce:,右边界填换行符即可,其余参数和正则提取器配置一致。
跨接口传递使用方法
提取成功的变量属于JMeter线程级变量,同线程组内所有后续接口都可以直接引用,根据参数传入位置的不同,引用方式如下:
- 若后续接口要求将x-nonce放在请求头中传递:给目标接口添加【HTTP信息头管理器】,新增头字段,名称填接口要求的
X-nonce,值填${x_nonce}即可 - 若后续接口要求将x-nonce放在URL查询参数中传递:在目标接口的【参数】标签页新增参数,参数名按接口文档要求填写,参数值填
${x_nonce} - 若后续接口要求将x-nonce放在POST请求体(如JSON格式报文)中传递:直接在请求体的对应字段位置填入
${x_nonce}即可,示例如下:
{ "bizParam": "test", "x-nonce": "${x_nonce}" }
调试技巧:可在线程组下添加【调试取样器】,搭配【察看结果树】组件查看运行结果,若调试取样器响应中能看到
x_nonce=实际返回的nonce值,则证明提取配置生效;若值为之前设置的缺省值,优先检查是否选错了提取字段、正则/边界规则是否和响应头实际格式匹配,注意排查头字段名后是否存在多余空格。
内容的提问来源于stack exchange,提问作者Adnan Muzaffar
相关产品推荐
相关产品推荐

