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

Gatling中如何对接口返回值做URL编码后用于后续请求

在Gatling中对接口返回值进行URL编码并用于后续请求

别担心,这个问题很好解决!Gatling有现成的工具可以处理URL编码,下面是具体的实现步骤:

1. 对获取到的epj_ticket编码并存入Session

你需要修改原脚本里打印Session的exec块,在里面添加编码逻辑,把编码后的票证存入一个新的Session变量(比如encoded_epj_ticket):

.exec(http("request_epj_ticket")
 .post("https://api.qa1.xxx:8000/v1/yyy/")
 .header("Authorization", "${authorizationHeader}")
 .headers(headers_0)
 .body(ElFileBody("bodies/epj_ticket_request.json"))
 .check(regex("ticket\" : \"(.*?)\"").saveAs("epj_ticket")))
.exec(session=>{
  val rawTicket = session("epj_ticket").as[String]
  // 方法1:用Gatling内置的URL编码工具(推荐)
  val encodedTicket = io.gatling.commons.util.StringEscapeUtils.urlEncode(rawTicket)
  // 方法2:用Java原生工具(需指定UTF-8字符集)
  // val encodedTicket = java.net.URLEncoder.encode(rawTicket, "UTF-8")
  
  println("Raw epj_ticket:")
  println(rawTicket)
  println("Encoded epj_ticket:")
  println(encodedTicket)
  
  // 注意:Gatling的Session是不可变对象,必须用set返回新实例
  session.set("encoded_epj_ticket", encodedTicket)
})

2. 在后续请求中使用编码后的变量

把原来GET请求里的${epj_ticket}替换成我们刚存的${encoded_epj_ticket}即可:

.exec(http("request_hentPasient_1")
 .get("https://qa1.xxx.html?ticket=${encoded_epj_ticket}")
 .headers(headers_1)
 .check(status.is(expected = 200)))

小提醒

  • 优先用Gatling内置的StringEscapeUtils,它已经适配了URL编码的标准场景,不用额外处理字符集问题;
  • 如果用Java的URLEncoder,必须指定UTF-8字符集,避免出现编码不一致的bug;
  • 一定记得用session.set()返回新的Session实例,不然修改不会生效哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:38:18