如何在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
相关产品推荐
相关产品推荐

