【问题标题】:How to use one value per request from the Multiple Values extracted using JSON Extractor如何从使用 JSON 提取器提取的多个值中为每个请求使用一个值
【发布时间】:2019-05-23 16:04:01
【问题描述】:

使用 JSON Extractor,从响应正文中提取多个值。 调试采样器 -> 例如显示这 3 个值 ID_1=212 ID_2=211 ID_3=225

如何在下一个 HTTP Post 请求中使用这些?比如如何为每次运行使用一个值?

POST 请求正文 {"id"={$ID}} -> doesn't work.

但是,{"id"={$ID_1}}, {"id"={$ID_2}}, {"id"={$ID_3}} 单独工作。我想避免每次手动更改 POST 正文请求。

【问题讨论】:

    标签: json jmeter


    【解决方案1】:

    在 JSON 提取器之后添加一个 BeanShell PostProcessor(在同一级别,作为第一个请求的子级),并在代码区域中使用以下代码

    int matchNr = Integer.parseInt(vars.get("ID_matchNr"));// ID is the reference name of your JSON Extractor
    
    String ID = "";
    for(int i = 1; i <= matchNr; i++){
        if(i == 1){
         ID = "{\"id\"=" + vars.get("ID_" + i) + "}, ";
        }
    
        else if(i == matchNr){
         ID = ID + "{\"id\"=" + vars.get("ID_" + i) + "}";
        }
    
        else{
             ID = ID + "{\"id\"=" + vars.get("ID_" + i) + "}, ";
        }
    
        vars.put("IDs", ID);
    }
    

    现在在您的 POST 请求正文中使用变量 ${IDs},其值将类似于 {"id"=1}, {"id"=2}, {"id"=3}, {"id"=4}

    【讨论】:

      【解决方案2】:

      您可以根据需要使用 for 每个循环。检查 jmeter ForEach Controller。 ForEach 的第一个示例 jmx 可以满足您的要求。 在 reqEx 下方获取所有内容。然后 forEach 将所有正则表达式作为“inputVar”中的输入,并使用 returnVar 获取它。将 returnVar 传递给您的下一个请求,即 HTTP 2。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 2017-07-07
        • 2022-07-06
        • 2013-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多