我在JMeter中有一个HTTP请求采样器,它发送一个登录请求。参考值不与JMeter中的请求头一起发送
我必须从此HTTP请求的响应中获得access_token
,该响应必须与第二个HTTP请求采样器的请求标头一起发送。
登录请求的响应数据是这样的:
{ “状态”:真 “的access_token”: “91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM”}
正则表达式提取器
Reference Name: access_token
Regular expression: access_token":"(.*?)"
Template $1$
MatchNo:1
当我检查使用查看结果树形>正则表达式测试,我获得这样的结果此正则表达式:
匹配计数:1
匹配[1] [0] = 的access_token “:” 91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM”
匹配[1] [1] = 91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDF RURArvdmwYgWV9Nr2sHYDwivTM
我需要的是获得Match [1] [1]。即只有access_token
的值。
参考表达式的值在我HTTP头经理第二HTTP请求取样的:
Name: Authorization
Value : Bearer ${access_token}
现在,当我运行我的JMeter测试和观察查看结果树,我可以看到,第二请求的响应是
全球认证失败
和请求报头:
连接:保持活跃
问题是以下行:我必须得到access_token
值(的91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM
),而不是${access_token}
:
授权:承载$ {的access_token}
内容类型:应用程序/ JSON
的Content-Length:21
主机:本地主机
的User-Agent:Apache的HttpClient的/ 4.5 .3(Java/1.8.0_111)
如果不是给定参考标记,而是对HTTP标头管理器中的标记进行硬编码,那么响应i成功了。
注:我已经检查[How to get Response Data and parse it to HTTP Header Manager in JMeter
我怎样才能解决这个问题呢?
您的正则表达式后处理器是否设置了“默认值”?如果没有,请添加它。通过这种方式,您可以确定Regex后处理器是否真的找不到您的正则表达式(因此将使用默认值),或者它根本没有运行(因此您仍然会看到'$ {access_token}'未解析。如果找不到正则表达式,则在正则表达式提取器中必定存在一些错误:选中应用于和字段检查字段,确保它们是正确的,也许从头开始重新配置它。 –
如果未返回默认值,则表示后处理器根本没有运行。然后你需要检查什么样的返回,它是否有其他后处理器等 –
@Kiril S.谢谢你的回应,当我给出一个默认值时,头管理器采用该默认值,并随着第二个HTTP采样器的请求标头 –