我有 2 个 HTTP 请求:一个用于从 api 获取数据,另一个用于将数据 POST 到 api。
GET 请求以 JSON 形式带来多个用户。 POST 请求需要每个用户 1 个请求。因此我需要:
根据用户数量多次循环相同的 POST 请求(已经通过使用 while 控制器从 JSON 响应检查用户数量来做到这一点)。
对于每个 POST 请求,我需要根据 JSON 响应中的用户信息来更新此类请求中使用的变量。
我尝试的方法是在 POST 请求中使用 BeanShell PreProcessor,但我遇到了麻烦。
假设 POST 请求正文中有一个名为 ${name} 的变量。我正在使用 JSON Extractor PostProcessor(在 GET 请求上)路径:“Travelers[0].FirstName”,它返回第一个用户的名字,但随后我需要第二个用户的名称(Travelers1 https://i.stack.imgur.com/ZUCA7.png.FirstName) 在发送 POST 请求之前分配给相同的变量 ${name} ,依此类推。
问题是我不知道如何从另一个先前请求的 JSON 响应中调用 JSON 路径。有没有办法将 jsonpath 引用到特定的 JSON 响应,或者将整个 JSON 响应保存在变量中,然后在该变量中查找特定值作为 JSON 路径。
我已经使用 JSON 提取器尝试过此操作,但问题是,如果我使用路径:Travelers[*].FirstName,它实际上会获取 JSON 上的所有名称,但变量 ${name} 只会存储一个名称,而不是它们全部作为一个数组,稍后我可以使用普通变量 ${name[i]} 在 for 循环中访问它们。这就是为什么我需要从 BeanSheall 访问 JSON 路径。
以下是 JSON 响应的示例:
{
"Travelers":
[
{
"FirstName":"VICTOR",
"Surname":"ORREGO",
"Key":"1.1",
"PassengerRPH":1,
"TypeCode":"ADT"
},
{
"FirstName":"JULIO",
"Surname":"OZAETA",
"Key":"2.2",
"PassengerRPH":2,
"TypeCode":"ADT"
}
]
}
这是后处理器JSON 提取器 https://i.stack.imgur.com/ZUCA7.png在我正在使用的 GET 请求中。它当前正在将从 JSON 响应 (Victor) 获得的第一个名称分配给变量 ${Name}
我需要在下一次迭代(POST 请求)中变量 ${Name} 返回该路径中的下一个名称,即 Julio。