java.net.URISyntaxException:JMETER 上索引处的查询中存在非法字符

问题描述 投票:0回答:3

我有一个应用程序,我为其录制了 Jmeter 脚本来进行负载测试。授权通过 Azure AD 进行。

我将与身份验证相关的内容(例如动态生成的访问令牌、刷新令牌和 id 令牌)关联起来,并在负责调用 API 的请求中对它们进行参数化,并且可能需要这些令牌来授权调用API。

但是,我收到错误:-

java.net.URISyntaxException: Illegal character in query at index 98:
    at java.base/java.net.URI$Parser.fail(URI.java:2938)
    at java.base/java.net.URI$Parser.checkChars(URI.java:3109)
    at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3197)
    at java.base/java.net.URI$Parser.parse(URI.java:3139)
    at java.base/java.net.URI.<init>(URI.java:623)
    at java.base/java.net.URL.toURI(URL.java:1063)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:615)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1281)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1270)
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:630)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
    at java.base/java.lang.Thread.run(Thread.java:832)

我不知道我哪里错了。我有 3 个相关的动态令牌,它们是作为身份验证令牌请求的一部分生成的。

以下链接中的屏幕截图:-

Regular Expression Extractor

Setting parameters

Error on Jmeter

java jmeter performance-testing jmeter-5.0 jmeter-3.2
3个回答
1
投票

我遇到了这个问题。我做错了,是我没有在 URL 的参数前面加上“$”符号。

我如何解决这个问题: 当我遇到异常时,我计算了 URL 中的字符,直到索引(异常中给出),这让我意识到给定的索引有问题,然后我检查了我正在遵循的教程,万岁!问题已找到。

Example Image


0
投票

我相信这些“令牌”应该进入 HTTP 标头管理器,因为将它们作为请求参数将它们添加到请求 URL。

如果您的应用程序期望令牌成为 URL 的一部分(这有点奇怪),那么您需要勾选

URL Encode?
框或将包含需要编码的 字符的值包装到 __urlencode() 中功能


0
投票
在jmeter中有一个_urlencode()函数的复选框。参考图片

urlencode check box

© www.soinside.com 2019 - 2024. All rights reserved.