There are 2 requests.
In the first request through the Regular Expression Extractor I get data that looks like
VAR_1=foo
VAR_2=bar
VAR_3=base
VAR_N=NNN
VAR_matchNr=N
The data is stored in the variable VAR.
In the second request I added the JSR223 preprocessor. I added the following code to it:
def array = []
1.upto(vars.get('VAR_matchNr') as int, { index ->
array.add(vars.get('VAR_' + index))
})
vars.put('array', new groovy.json.JsonBuilder(array).toPrettyString());
When the script runs, everything is processed correctly, the data from the VAR variable is converted into an array.
I have the following question:
I need to pass the received data in the parameters of a POST request. Right now I'm passing through the ${array} variable. But the entire array is transferred at once and the request is executed incorrectly. enter image description here
How can I make sure that each array value in the query parameters is written as a separate parameter? At the same time, I don’t know for sure how many parameters there will be, there can be from 0 to 20 enter image description here
You need to amend "your" code to create HTTP Request sampler parameters dynamically on the fly instead of saving the matches into the JMeter Variable.
Something like:
def arguments = sampler.getArguments()
1.upto(vars.get('VAR_matchNr') as int, { index ->
arguments.addArgument(new org.apache.jmeter.protocol.http.util.HTTPArgument("list[]", vars.get('VAR_' + index)))
})
sampler.setArguments(arguments)
See Apache Groovy: What Is Groovy Used For? article for more information on Groovy scripting in JMeter