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

JMeter中如何发送值包含::的查询参数?

在JMeter中发送包含::的查询参数值的解决方案

我们有一个GET API,请求URL如下:

https://sampledomain.com/api?bucket=abc&table=xyz&filters=uuid::12367d-ae0b-44b5-9813-zxzxzx6c00000,anotheruuid::324,date::2022-04-01|2022-04-06,uuid3::1BABFPDT

其中filters参数的值是用逗号分隔的key::value对,以双冒号::作为分隔符。在Postman中调用该API正常,但在JMeter中返回400错误——无论直接在URL路径中添加参数,还是通过参数列表配置,无论开启或关闭URL编码,JMeter都会将:编码为%3A,最终发送的请求URL变为:

https://sampledomain.com/api?bucket=abc&table=xyz&filters=uuid%3A%3A12367d-ae0b-44b5-9813-zxzxzx6c00000%2Canotheruuid%3A%3A324%2Cdate%3A%3A2022-04-01%7C2022-04-06%2Cuuid3%3A%3A1BABFPDT

以下是可行的解决方法:

1. 单独控制目标参数的编码

  • 在JMeter的HTTP请求中,拆分配置:
    • 「路径」栏仅填写/api
    • 切换到「参数」面板,添加以下参数:
      • 参数名bucket,值abc
      • 参数名table,值xyz
      • 参数名filters,值uuid::12367d-ae0b-44b5-9813-zxzxzx6c00000,anotheruuid::324,date::2022-04-01|2022-04-06,uuid3::1BABFPDT
  • 在filters参数对应的「编码」列,取消勾选(其他参数保持默认勾选状态)。这样JMeter会仅对需要编码的参数处理,filters中的::将保持原样发送。

2. 使用Raw请求构造参数(备选方案)

  • 添加「HTTP Header Manager」,设置Content-Type为application/x-www-form-urlencoded(根据服务器要求调整)。
  • 在HTTP请求的「请求体」面板选择「Raw」格式,直接写入完整参数串:
    bucket=abc&table=xyz&filters=uuid::12367d-ae0b-44b5-9813-zxzxzx6c00000,anotheruuid::324,date::2022-04-01|2022-04-06,uuid3::1BABFPDT
    
  • 注意:部分服务器可能要求GET请求的参数必须放在URL中,此时可结合「HTTP URL Rewriting Modifier」或直接构造URL并禁用全局编码。

3. 禁用全局URL编码(不推荐,仅应急使用)

  • 打开JMeter安装目录下bin/jmeter.properties文件,找到urlencoder.encodeparams=true行,修改为urlencoder.encodeparams=false,重启JMeter。
  • 此方法会禁用所有参数的URL编码,可能导致其他含特殊字符的参数出现异常,仅在确认所有参数都无需编码时使用。

内容的提问来源于stack exchange,提问作者gurusharan n

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:07:22