首页 > 解决方案 > Jmeter:无效的uri转义绝对路径无效

问题描述

以下是我遵循的步骤: 1. 在我的脚本中调用 HTTP 请求,它会在 json 中生成有效响应。例子:

{ "SortAs": "SGML", "GlossTerm": "2210", "Acronym": "SGML", "Abbrev": "ISO 8879:1986" }

  1. 现在使用正则表达式提取器从响应("GlossTerm":(.+?))中获取一个值,并添加了一个我之前声明过的用户参数(RNDM):${RNDM}.+"GlossTerm":(。 +?)

这里 RNDM=90291 和 GlossTerm=2210

上面的整个正则表达式以x 3 的形式存储在 Reference Name 中。我正在使用引用名称来形成我的另一个 url 以在 HTTP 请求中调用 PUT 方法:示例:http: //10.12.30.11/abc/test/ ${ X}

当脚本运行第 3 步时,我收到错误java.lang.IllegalArgumentException: Invalid uri ' http://10.12.30.11/abc/test/ ${x}': escaped absolute path not valid

我已经完成的调试: 1. 检查 url 没有任何空间。2. 尝试使用特殊字符的 url 编码形式。

在阅读了谷歌中的几篇这样的帖子后,我来发布这个关于堆栈溢出的查询。请帮助我解决这个问题。

标签: jmeter

解决方案


您的正则表达式提取器不正确,特别是当您在此处添加此${RNDM}.位时它变得不正确。此外,它会产生下一个变量,正如Debug Sampler所证明的那样

x="GlossTerm": "2210",
x_g=2
x_g0="GlossTerm": "2210", 
x_g1="GlossTerm": "2210",
x_g2= "2210",

JMeter 调试采样器

这似乎不是你要找的东西。

因此,我建议您执行以下操作:

  1. 切换到更适合处理 JSON 数据的JSON Extractor ,相关的Json Path查询将非常简单$.GlossTerm

    JMeter JSON 路径

  2. 将您的 URL 修改为如下所示:http://10.12.30.11/abc/test/${RNDM}${x}

  3. 就是这样,你应该得到http://10.12.30.11/abc/test/902912210结果:

    JMeter 组合变量


推荐阅读