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

如何在Gatling脚本中向.get方法传递变量?405错误求助

排查Gatling脚本动态传参导致的405错误

首先,最可能的问题出在你的JSON文件语法错误上,这直接导致Gatling无法正确解析feed数据,变量${id}没有被替换成预期的值,进而引发服务器返回405错误。

1. 修复JSON文件的语法问题

你当前的JSON文件用了=来定义键值对,但标准JSON语法要求用冒号:。正确的JSON内容应该是:

[{"id": "Test1"}, {"id": "Test2"}]

如果JSON格式错误,Gatling的jsonFile feeder无法读取到有效的id值,请求中的${id}会保持原样(或者被替换为空),服务器接收到格式异常的请求后,就可能返回405 Method Not Allowed。

2. 修正Gatling脚本的时间语法

你的during(10 minute)写法有问题,Gatling的时间单位需要用复数形式,应该改为:

.during(10 minutes) {
  // 你的请求逻辑
}

或者直接传入秒数(10分钟=600秒):

.during(600) {
  // 你的请求逻辑
}

这个语法错误虽然不一定直接导致405,但会影响脚本的执行逻辑,需要修正。

3. 验证变量是否正确注入

为了确认id变量是否被正确替换,可以在请求前添加日志输出,方便调试:

.feed(jsonFile("gabdeviceid.json").circular)
.during(10 minutes) {
  exec(session => {
    // 打印当前session中的id值,确认是否正确读取
    println("当前使用的id: " + session("id").as[String])
    session
  })
  .exec(http("request_0")
    .get("/user/isTokenValid?id=${id}")
    .headers(headers_0))
}

运行脚本后查看控制台输出,如果能正常打印Test1和Test2,说明feed已经正常工作,此时再测试请求应该就能返回正确结果。

4. 额外检查点

如果上述修复后仍有问题,可以:

  • 检查Gatling的日志,查看实际发送的请求URL是什么,确认参数是否正确拼接。
  • 确认服务器端对/user/isTokenValid接口的GET请求是否允许参数为空的情况(当变量未替换时,参数为空可能触发405)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:29:24