如何从http响应中保存标头

时间:2019-05-14 10:57:19

标签: scala gatling

我正在尝试建立一个场景,在该场景中,用户首先登录,然后在注销之前先执行一些操作。 问题是我想保存登录请求中的标头响应,以便在下一个请求中使用它。

用户登录时,将获得包含带有令牌的Authorization标头的标头响应。

这是我的代码,但是不起作用:

val LoggingTest = scenario("Basic Scenario")
      .exec(http("Logging")
      .post("/login")
      .body(
        StringBody("""{"name" : "test",
          "password" : "test"}""")
      )
      .check(header("Authorization").saveAs("token"),status.is(200))
    ).pause(15)

    .exec(http("check")
    .get("/sayhi")
    .header("Authorization",s"${token}")
    .check(status.is(200))
    ).pause(15)

我该如何解决?

2 个答案:

答案 0 :(得分:3)

这是您可以执行的操作:


import io.gatling.core.Predef._
import io.gatling.http.Predef._

val LoggingTest: ScenarioBuilder = scenario("Basic Scenario")
  .exec(http("Logging")
     .post("/login")
     .body(
        StringBody("""{"name" : "test",
        "password" : "test"}""")
     )
     .check(header("Authorization").saveAs("token"),status.is(200))
   ).pause(15)
   .exec( 
     http("check")
       .get("/sayhi")
       .header("Authorization", session => session("token").validate[String])
       .check(status.is(200))
   ).pause(15)

答案 1 :(得分:2)

不是s"${token}",而是没有"${token}"的{​​{1}}。

可悲的是,IntelliJ自动添加了此s,因为它认为您想在使用Gatling表达式语言时使用Scala的String插值。