2017-10-11 30 views
0

我在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

我怎样才能解决这个问题呢?

+0

您的正则表达式后处理器是否设置了“默认值”?如果没有,请添加它。通过这种方式,您可以确定Regex后处理器是否真的找不到您的正则表达式(因此将使用默认值),或者它根本没有运行(因此您仍然会看到'$ {access_token}'未解析。如果找不到正则表达式,则在正则表达式提取器中必定存在一些错误:选中应用于和字段检查字段,确保它们是正确的,也许从头开始重新配置它。 –

+0

如果未返回默认值,则表示后处理器根本没有运行。然后你需要检查什么样的返回,它是否有其他后处理器等 –

+0

@Kiril S.谢谢你的回应,当我给出一个默认值时,头管理器采用该默认值,并随着第二个HTTP采样器的请求标头 –

回答

0

很可能是您的正则表达式提取器由于额外的空间或换行符等原因而失败。

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

JMeter JSON Path Extractor

API Testing With JMeter and the JSON Extractor文章的详细信息。

除此之外,在您的测试计划的其余元素的配置看起来不错。

+0

: - 谢谢你,添加一个json提取器解决了我的问题:) –