【问题标题】:Jmeter : Issue with HTTP request returns java.net.URISyntaxExceptionJmeter:HTTP 请求问题返回 java.net.URISyntaxException
【发布时间】:2020-03-17 18:59:00
【问题描述】:

我正在使用我们的测试应用程序生成的 RSS 提要来验证我们网站上是否有任何损坏的链接。

当我在经过一些预处理(拆分 URL 以提取协议、主机、域)后在 HTTP 采样器中使用这些 URL 时,大多数 URL 都可以正常工作,但我遇到了一些 随机问题案例如下所述。

例如: 下面提到的 URL 会抛出 URI 异常。下面提到的这些 URL 中突出显示的文本之间的 分隔符 不是 似乎是一个正常的连字符。这是一些特殊的字符,我想需要特殊处理。

来自 Feed 的网址失败

https://abc.xyz.com/article/worksheet-development-规划—经理-preparation-10200/download/

https://abc.xyz.com/article/worksheet-development-planning—worker-preparation-10201/download/

来自断言侦听器的 JMeter 结果

See link below for JMeter Result from Assertion Listener

网址被一些意外字符编码

【问题讨论】:

  • 是的,URL 中的任何非 ASCII 字符(甚至一些 ASCII 字符)都必须进行百分比编码(主机名使用 punycode aka IDNA 除外),以及任何生成带有非 ASCII 字符的声称 URL 的内容有缺陷。查看 25 年前的数十种规范中的任何一种或(最简单的)en.wikipedia.org/wiki/Percent-encoding
  • 能否贴一下Http请求配置的截图。我认为 url 被标记为编码。
  • 根据 Dmitri 的建议,使用 urlencode 功能后,现在可以正常使用了。

标签: java jmeter automated-tests performance-testing jmeter-5.0


【解决方案1】:

你是对的,这个 - 符号需要是 URL-encoded,你的 URL 路径应该是这样的

article%252Fworksheet-development-planning%25E2%2580%2594manager-preparation-10200%252Fdownload%252F

JMeter 提供了__urlencode() function,它可以即时对传递的参数执行 URL 编码,因此您可以直接在 HTTP Request 采样器的“路径”字段中使用它,例如:

${__urlencode(/article/worksheet-development-planning—manager-preparation-10200/download/)}

查看Apache JMeter Functions - An Introduction 文章以了解有关 JMeter 函数概念的更多信息。

【讨论】:

  • 谢谢德米特里。它解决了我在上面发布的 URL 的问题。但是,随着这种变化,我开始面临 URL 中提到的日期的问题。 see original url 使用 __urlencode() 函数后,url 失效,jmeter 报 404 错误。 see encoded url我相信我们需要特殊处理日期。
  • 然后只对需要编码的字符使用__urlencode()函数
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 2019-11-12
相关资源
最近更新 更多