You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter报错:Invalid uri escaped absolute path not valid 问题求助

解决JMeter中PUT请求URI无效的问题

你的问题大概率出在正则表达式提取的内容不符合预期,导致拼接URL时引入了无效字符,或者变量根本没被正确替换。我来一步步帮你排查和解决:

1. 修正正则表达式提取逻辑

你当前用的正则${RNDM}.+"GlossTerm":(.+?)有两个关键问题:

  • 没有匹配GlossTerm值周围的双引号,所以提取到的${x}可能是"2210"(带双引号),而非纯数字2210。带引号的内容直接放到URL里会违反URI规范,即使编码也可能触发格式错误。
  • 如果${RNDM}和GlossTerm之间的匹配逻辑过于宽泛,还可能提取到错误内容,甚至完全匹配失败,导致${x}为空或保留变量名原样,这也会引发URI无效的报错。

修正后的正则表达式:
如果必须保留${RNDM}的前置匹配,应该写成:

${RNDM}.+"GlossTerm":"(.+?)"

如果不需要前置匹配,直接提取GlossTerm的值,更简洁可靠的写法是:

"GlossTerm":"(.+?)"

同时务必确认正则提取器的模板设置为$1$(表示取第一个分组的内容),匹配数字设为1(取第一个匹配项)。

2. 改用JSON Extractor更稳妥

因为你的响应是标准JSON,用JSON Extractor比正则表达式更精准,完全避免正则匹配的歧义问题:

  • 在返回JSON的HTTP Request下添加JSON Extractor
  • 引用名称填x
  • JSON Path Expression填$.GlossTerm(直接定位到GlossTerm字段的纯值)
  • 匹配数字设为1

这样提取到的${x}必然是纯的2210,不会带任何多余字符。

3. 验证变量是否正确替换

添加一个Debug Sampler到测试计划中,运行后查看x变量的值:

  • 如果x显示为2210,说明提取逻辑正常
  • 如果x为空、带引号或其他乱码,说明提取规则需要调整

4. 正确配置PUT请求的URL

建议拆分HTTP Request的配置:

  • Server Name or IP填10.12.30.11
  • Path填/abc/test/${x}
    而非把整个URL塞进Server Name字段,这样JMeter会更准确地解析路径中的变量。

完成以上步骤后,再运行PUT请求,应该就能解决URI无效的问题了。

内容的提问来源于stack exchange,提问作者Sumit Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:05:47