MetersPhere提取信息头token并设置为全局变量
我们需要登录接口的token参数,如下
在下面这一行了
Set-Cookie: tokenId=A552326CDC8F4A19B454DADF8938980B; path=/
参考了其他的文章,再加上自己的理解,现在提供两种方法,先把先驱的脚本拿出来
// 获取响应头
rh = prev.getResponseHeaders();
log.info("--------------" + rh.toString());
//将响应头拆分存入数组A
String[] A=rh.split("\n");
log.info(Arrays.toString(A));
//创建一个哈希
Map kv=new HashMap();
for(i=1;i<A.length;i++)
{
log.info("第"+i+"个:"+A[i]);
//获取单个数组值
String v=A[i];
String[] B=v.split(":");
//将B数组中的内容作为键值对存储
kv.put(B[0],B[1]);
}
//打印哈希表
log.info(kv.toString());
//获取你想要的值
a=kv.get("X-ALIDW-VSHOP-ID");
log.info(a);
// 将获取的值设置为环境变量
vars.put(${__metersphere_env_id}+"a",a);
//获取你想要的值
b=kv.get("X-ALIDW-SHOP-ID");
log.info(b);
// 将获取的值设置为环境变量
vars.put(${__metersphere_env_id}+"b",b);
然后根据自己的情况修改脚本,比我们的这个响应头信息,有三个Set-Cookie,那一定不能用上面的脚本了,需要自己修改一下
// 获取响应头
rh = prev.getResponseHeaders();
log.info("--------------" + rh.toString());
//将响应头拆分存入数组A
String[] A=rh.split("\n");
log.info(Arrays.toString(A));
//获取Set-Cookie: tokenId=A552326CDC8F4A19B454DADF8938980B; path=/ 这一行
String C=A[11];
String[] D=C.split(":");
//获到取 tokenId=A552326CDC8F4A19B454DADF8938980B; path=/
String E=D[1];
log.info(E);
String[] F=E.split(";");
//获取到 tokenId=A552326CDC8F4A19B454DADF8938980B
log.info(F[0]);
String[] G=F[0].split("=");
// 获取到 A552326CDC8F4A19B454DADF8938980B
log.info(G[1]);
//设置为全局变量 记得这个G[1],参数在同一个脚本内可以直接使用
vars.put(${__metersphere_env_id}+"token",G[1]);
脚本的调试可以看控制台
第二个查询接口需要用到这个token
也可以使用下面这种办法
第一步,先添加一个提取参数,我习惯用正则表达式,因为简单,提取的内容选择Response Headers,命名为token1,表达式为
Set-Cookie: tokenId=(.+?); path=/
表达式的编写很简单,就是把你需要的那一行全部复制出来,然后将需要提取的删除掉,替换成(.+?)就可以了。
第二步,新增一个后置脚本
vars.put(${__metersphere_env_id}+"token1","${token1}");
注意,这个token1参数,并不是和这个后置脚本一起的,不可以直接用token1,需要使用"${token1}"
使用是相同的