我提取了一个API密钥,JMeter不喜欢提取的正则表达式中的特殊字符 .
Below is an example
我使用正则表达式提取器从上一页提取数据 . 提取的值是:TEST | 1TWO3-TEST
Error message
稍后使用此值时,我收到以下消息:
java.net.URISyntaxException: Illegal character in query at index 5: (URL+Regex)
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parseHierarchical(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
at java.net.URL.toURI(Unknown Source)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:286)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1146)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1135)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:434)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:261)
at java.lang.Thread.run(Unknown Source)
Hard Coded Value
当硬编码它的值时它工作正常:TEST%7C1TWO3-TEST
有关如何通过正则表达式提取器使正则表达式看起来像我的硬编码值的任何建议吗?
4 回答
您需要对参数进行url编码 .
在HTTP Request中,确保在参数表中检查"Encode ?":
如果参数在路径中,则可以在表中移动它以获取GET请求 .
如果您最终需要编码,那么在提取器之后使用JSR 223 Post Processor,检查Cache脚本并添加,如果您的regexp提取器创建varName,例如:
然后你可以通过 $ 使用变量
您的错误不在正则表达式中,而是在您使用数据的方式之后 . 使用正则表达式提取值后,请确保对数据进行如下编码:
现在您可以使用
url
进行您正在进行的任何操作 . 我假设你已经将TEST|1TWO3-TEST
解压缩到一个变量中 .Test
只需使用urlEncode() function包装来自正则表达式提取器的变量:
演示:
查看How to Use JMeter Functions文章系列,了解有关在JMeter测试中使用函数的更多信息 .
通过JMeter Plugins project也可以找到很多有用的 .
感谢您的回复,我做了以下工作 .
谢谢