Base64 JAVA使用SCALA - GATLING中的动态值进行编码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Base64 JAVA使用SCALA - GATLING中的动态值进行编码相关的知识,希望对你有一定的参考价值。
我正在使用GATLING并试图在scala中使用java库“Base64”来发送编码用户:密码在header(“authorization”)请求中,带有动态值:我正在尝试执行以下操作:
val register = {
exec(request.asJSON
.check(status.is(200))
.check(jsonPath("$..user").saveAs("user"))
.check(jsonPath("$..password").saveAs("password"))
).pause(1)
}
val myvalue: HttpRequestBuilder = Utils.createPostFormParamsRequest(
"myvalue",
login,
Map("value"-> ("Basic " + Base64.getEncoder.encodeToString((("${user}").getBytes() + ":" + ("${password}").getBytes()).getBytes("utf-8")))),
Map())
我也试过Base64.getEncoder.encodeToString(("${uesr}" + ":" + "${password}").getBytes("utf-8"))))
但似乎Base64采用String "${user}"
而不是实际值,因此加密无法正常工作。
我试过:
val helper = {
exec { session =>
val user : String= (session("user").as[String])
val password : String= (session("password").as[String])
val temp = "Basic " + Base64.getEncoder.encodeToString((user + ":" + password).getBytes("utf-8"))
val temp2: HttpRequestBuilder = Utils.createPostFormParamsRequest(
"bla",
login,
Map("value"-> temp),
Map())
val assert = {
exec(helper.asJSON
.check(status.is(200))
.check(header("answer").saveAs("answer"))
).pause(1)
}
session
}
这里加密工作正常,但“exec”没有。
有一种方法可以在运行时保存值而不需要exec的一部分吗?
我不太了解加特林,但我认为这应该有效。它不是最漂亮的,但没有看到完整的代码以及如何使用它有点难以想出一些看起来不错的东西:
var token: String = null
val registerAssert = exec(...)
def finalToken = {
Utils.createPostFormParamsRequest(
"Final token",
Constants.LOGIN,
Map("Authorization"-> token),
Map())
}
def saveToken(s: Session) = {
token = "Basic " + Base64.getEncoder.encodeToString((s("uuid").as[String].getBytes() + ":" + s("secret").as[String].getBytes()).getBytes("utf-8")
s
}
// now you're actually executing the above
scenario(...)
.exec(registerAssert)
.exec(saveToken(_))
.exec(finalToken) // I'm assuming finalToken is executable
这样做的目的是首先将令牌值保存在类变量中,然后仅构造finalToken
请求(使用该令牌)。因此,def
,以及它被称为token
值将被设定。
以上是关于Base64 JAVA使用SCALA - GATLING中的动态值进行编码的主要内容,如果未能解决你的问题,请参考以下文章
如何构建json串,并将map转为jsonObject对象的三种方式(scala)
通过python扩展spark mllib 算法包(e.g.基于spark使用孤立森林进行异常检测)
Java:使用 java.util.Base64 与 android.util.Base64 解码 base64 字符串时的不同结果