我在JMeter中有一个HTTP请求采样器,它发送一个登录请求。
我必须从这个HTTP请求的响应中获得access_token
,该请求必须与第二个HTTP请求采样器的请求头一起发送。
登录请求的响应数据如下所示:
{“状态”:true,"access_token":"91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM"}
正则表达式抽取器
Reference Name: access_token
Regular expression: access_token":"(.*?)"
Template $1$
MatchNo:1
当我使用视图结果树->RegExp检查这个正则表达式时,我获得的结果如下:
比赛计数:1 Match1= access_token":"91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM“ Match1= 91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM
我需要的是获得Match1。即access_token
值.
引用我的HTTP报头管理器中第二个HTTP请求采样器中表达式的值
Name: Authorization
Value : Bearer ${access_token}
现在,当我运行JMeter测试并观察视图结果树时,我可以看到第二个请求的响应是
全局身份验证失败
和请求头:
连接:保持连接
问题在下面一行中:我必须得到access_token
值(91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM
),而不是${access_token}
授权:承载${access_token}内容-类型: application/json 内容长度: 21 宿主:本地主机 用户代理:/4.5.3 (Java/1.8.0_111)
如果我没有提供引用令牌,而是在HTTP报头管理器中对令牌进行硬编码,那么响应是成功的。
注意:我已经检查过(如何在JMeter](https://stackoverflow.com/questions/35935934/how-to-get-response-data-and-parse-it-to-http-header-manager-in-jmeter/35936805#35936805?newreg=78ccd96d58a346f194a6c7ddadbee687)中获取响应数据并将其解析为Header )。
我怎样才能解决这个问题?
发布于 2017-10-12 05:20:11
很可能您的正则表达式抽取器由于额外的空间或行中断或其他原因而失败。
请注意,从ApacheApache3.0开始,您就拥有了用于使用JMeter从JSON响应类型获取数据的JSON萃取器。相关的JSON抽取器配置将非常简单,如:
有关的更多信息,请参见用JMeter和JSON抽取器进行API测试文章。
除此之外,测试计划中的其余元素配置看起来还不错。
https://stackoverflow.com/questions/46690181
复制相似问题