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

java.net.URISyntaxException: Illegal character in query at index on JMETER

我有一个应用程序,我为其录制了 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 个相关的动态令牌,它们是作为身份验证令牌请求的一部分生成的。

下面的截图link:-

Regular Expression Extractor

Setting parameters

Error on Jmeter

我认为这些“令牌”应该放入 HTTP Header Manager 中,因为将它们作为请求参数将它们添加到请求中 URL。

如果您的应用程序希望令牌成为 URL 的一部分(这有点奇怪),那么您需要勾选 URL Encode? 框或包装可以包含的值characters requiring encoding into __urlencode() function

我遇到过这个问题。我做错的是,我没有在 URL.

中的参数前加上“$”符号

我是如何解决这个问题的: 当我得到异常时,我计算了 URL 中的字符直到索引(在异常中给出)这让我意识到给定索引有问题,然后我检查了我正在关注的教程,并且欢呼!问题已找到。

Example Image