gpt4 book ai didi

json - jMeter 未将变量应用于 header 管理器

转载 作者:行者123 更新时间:2023-12-05 09:18:26 25 4
gpt4 key购买 nike

我在 Mac 上使用 Apache JMeter 3.2 r1790748。我有一个 setUp Thread Group 进行身份验证调用。该调用有效并正确输出 token 。现在我需要将该 token 传递给 HTTP header 管理器,用于我正在进行的所有调用。

首先,这是我的 token json 输出:

{
"access_token": "aaaaaa555555555",
"token_type": "Access",
"user_id": "5555"
}

这是我的HTTP header 管理器 的样子:

1 值:Authorization : Bearer ${access_token}

我的网络调用:

GET https://my_server.com/some_path

GET data:

[no cookies]

Request Headers:
Connection: close
Authorization: Bearer ${access_token}
Host: my_server.com
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_91)

如您所见,变量 access_token 没有被设置调用中的值替换。

我尝试过的:

BeanShell 后处理器:

我创建了这个脚本,它实际上正确地解析并输出了 access_token:

import org.apache.jmeter.protocol.http.control.Header;
import net.minidev.json.JSONObject;
import net.minidev.json.parser.JSONParser;


String jsonString = prev.getResponseDataAsString();
log.info("jsonString = " + jsonString);

JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE);
JSONObject json = (JSONObject) parser.parse(jsonString);

String access_token = json.getAsString("access_token");
log.info("access_token = " + access_token);
vars.put("access_token", access_token);

JSON 提取器:

Apply to: Main sample and sub-samples
Variable names: access_token
JSON Path expressions: access_token
Match No. (0 for Random): 1
Compute concatenation var (suffix _ALL): unchecked
Default Values: none

关于 header 管理器为何不应用 access_token 结果的值的任何想法?

谢谢!

最佳答案

由于您在 setUp 线程组中设置了一个变量,因此您不能在另一个线程组中使用它,因为线程组不共享变量,仅共享属性

所以为了通过认证,需要将其保存为一个属性:

${__setProperty(access_token, ${access_token})};

在此示例中,我使用名为 access_token变量 的值(已设置,但仅在 setUp 线程组中可用)来设置属性具有相同的名称,这将在线程组中可用。或者更改 BeanShell 后处理器,添加:

props.put("access_token", access_token); 

然后在另一个线程组中,您使用 __P__property 函数检索它:

${__P(access_token)}

另外请记住,HTTP header 管理器会在任何线程启动之前进行初始化,因此您也不能为此使用变量。检查this question例如。

如果您仍然看到空值,我建议添加 Debug Sampler (同时启用 JMeter 属性和 JMeter 变量)在两个线程组中,并检查损坏的位置(在保存或检索时)。

关于json - jMeter 未将变量应用于 header 管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com