Web Services 如何在Jmeter中将附件编码为Base64?

5hcedyr0  于 2023-11-22  发布在  其他
关注(0)|答案(6)|浏览(185)

我尝试在Jmeter中将文件编码为Base64,以使用以下脚本测试Web服务:

String file = FileUtils.readFileToString(new File("${filepath}"), "UTF-8");
vars.put("file", new String(Base64.encodeBase64(file.getBytes("UTF-8"))));

字符串
这对纯文本文件很有效,对其他文件类型则不起作用。
我如何使它适用于其他文件类型?

xoshrz7s

xoshrz7s1#

Jmeter有很多药水可以把一个变量转换成“Base64”,下面是几个选项
1.豆壳预处理机

  1. BeanShell后处理器
    1.豆壳取样器。
    下面是“Bean shell”代码,它用于在“Bean shell预处理器”中将变量转换为Base64
import org.apache.commons.codec.binary.Base64;

String emailIs= vars.get("session");

byte[] encryptedUid = Base64.encodeBase64(emailIs.getBytes());
vars.put("genStringValue",new String(encryptedUid));

字符串
示例如下:
Base64之前的版本:jdwqoeendwqqm12sdw
碱基64之后:amR3cW9lZW5kd3FxbTEyc2R3
使用Jmeter转换:


的数据



使用base64转换的站点:


kt06eoxx

kt06eoxx2#

由于Groovy现在是每个JMeter Sampler,Pre- & PostProcessor,Assertion等中首选的JSR 223脚本语言,因此这项任务非常容易。

def fileAsBase64 = new File("${filepath}").bytes.encodeBase64().toString()
vars.put("file", fileAsBase64)

字符串
或者作为一个班轮:

vars.put("file", new File("${filepath}").bytes.encodeBase64().toString())


就这样

oyt4ldly

oyt4ldly3#

使用函数${__base64Encode(nameofthestring)}编码字符串值,使用${__base64Decode(nameofthestring)}解码字符串值。

ngynwnxp

ngynwnxp4#

你的问题来自这样一个事实,即你认为二进制文件作为文本时,阅读他们是错误的。
使用此命令阅读文件:

  • https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#readFileToByteArray(java.io.File)

然后用Base64编码字节数组

0yycz8jy

0yycz8jy5#

试试这个

import org.apache.commons.codec.binary.Base64;
String forEncoding = vars.get("userName") + ":" + vars.get("passWord");
byte[] token = Base64.encodeBase64(forEncoding.getBytes());
vars.put("token", new String(token));

字符串

lhcgjxsq

lhcgjxsq6#

另一种方法是在用户定义变量中直接创建一个groovy函数,

${__groovy(new File(vars.get("filepath")).bytes.encodeBase64().toString(),)}

字符串

相关问题