首页 > 解决方案 > 如何从 http 响应中保存标头

问题描述

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

当用户登录时,他会收到一个包含 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)

请问我该如何解决?

标签: scalagatling

解决方案


您可以这样做:


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)

推荐阅读