首页 文章

参考值不与JMeter中的请求标头一起发送

提问于
浏览
1

我在JMeter中有一个HTTP请求采样器,它发送一个登录请求 .

我必须从此HTTP请求的响应中获取 access_token ,该请求必须与第二个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

当我使用View Results Tree-> RegExp Test检查这个正则表达式时,我得到的结果如下:

匹配计数:1匹配[1] [0] =的access_token “:” 91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM”匹配[1] [1] = 91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM

我需要的是获得Match [1] [1] . 即只是 access_token 值 .

在第二个 HTTP request SamplerHTTP Header Manager 中引用表达式的值:

Name: Authorization
Value : Bearer ${access_token}

现在,当我运行JMeter测试并观察 View Results Tree 时,我可以看到第二个请求的响应是

全局身份验证失败

Request Headers:

连接:保持活力

问题出在以下几行:我必须得到 access_token 值( 91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.91kLM68tdMBoDFRURArvdmwYgWV9Nr2sHYDwivTM.Arvdm_M68-BoDFRURArvdmwYgWV9Nr2sHYDwivTM )而不是 ${access_token}

授权:Bearer $ Content-Type:application / json Content-Length:21主机:localhost用户代理:Apache-HttpClient / 4.5.3(Java / 1.8.0_111)

如果不是给出引用令牌,而是在HTTP头管理器中对令牌进行硬编码,则响应成功 .

Note: 我已经查过[How to get Response Data and parse it to HTTP Header Manager in JMeter

我该如何解决这个问题?

1 回答

  • 1

    很可能你的正则表达式提取器由于额外的空间或换行或其他原因而失败 .

    请注意,自Apache JMeter 3.0以来,您有JSON Extractor,它用于使用Json Path languageJSON响应类型获取数据 . 相关的JSON Extractor配置非常简单:

    JMeter JSON Path Extractor

    有关详细信息,请参阅API Testing With JMeter and the JSON Extractor文章 .

    除此之外,测试计划中的其余元素配置看起来还不错 .

相关问题