【问题标题】:java.net.URISyntaxException: Illegal character in query at index on JMETERjava.net.URISyntaxException:JMETER 索引处的查询中存在非法字符
【发布时间】:2021-03-26 16:58:10
【问题描述】:

我有一个应用程序,我记录了 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

【问题讨论】:

  • 我认为您需要将授权放在 HTTP 标头而不是参数中。
  • 我没数过,但索引 98 似乎确实在pageslistTiles 之间的: 周围,而: 是保留字符。您需要对冒号进行百分比编码。

标签: java jmeter performance-testing jmeter-5.0 jmeter-3.2


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    Example Image

    【讨论】:

      猜你喜欢
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多