JMeter中的参考值未与请求标头一起发送
问题内容:
我在JMeter中有一个HTTP请求采样器,用于发送登录请求。
我必须access_token从此HTTP请求的响应中获取,该响应必须与第二个HTTP请求
采样器的请求标头一起发送。
登录请求的响应数据如下所示:
{“status”:true,”access_token”:”91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM”}
Regular Expression Extractor
Reference Name: access_token
Regular expression: access_token":"(.*?)"
Template $1$
MatchNo:1
When I am checking this regular expression using View Results Tree- >RegExp
Test
, I am obtaining a result like this:
Match count: 1
Match[1][0]=
access_token”:”91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM”Match[1][1]=
91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM
我需要获取Match [1] [1]。即只是access_token
价值。
在 第二个HTTP请求采样器的HTTP标头管理器中引用表达式的值:
Name: Authorization
Value : Bearer ${access_token}
现在,当我运行JMeter测试并观察View Results Tree时,我可以看到第二个请求的响应是
Global Authentication Failed
and the Request Headers:
Connection: keep-alive
problem is in the following line: I have to get the access_token
value
(91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM
)
instead of ${access_token}
:
Authorization: Bearer ${access_token}
Content-Type: application/json
Content-Length: 21
Host: localhost
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_111)
如果不是给参考令牌,而是在HTTPHeader Manager中对令牌进行硬编码,则响应成功。
我该如何解决这个问题?
问题答案:
正则表达式提取器很可能由于多余的空间或换行符
或其他原因而失败。
请注意,从Apache JMeter 3.0开始,您就有了JSONExtractor,它设计用于 使用Json Path语言从JSON响应
类型获取数据。该 JSON提取相关的配置是一样简单:
JMeter JSON路径提取器
有关更多信息,请参见使用JMeter进行API测试和JSON提取器文章。
除此之外,测试计划中其余的元素配置看起来还不错。