如何在 Jmeter 中将附件编码为 Base64?
How to encode an attachment to Base64 in Jmeter?
我正在尝试在 Jmeter 中将文件编码为 Base64,以使用以下脚本测试 Web 服务:
String file = FileUtils.readFileToString(new File("${filepath}"), "UTF-8");
vars.put("file", new String(Base64.encodeBase64(file.getBytes("UTF-8"))));
这适用于 plain/text 文件,但不适用于其他文件类型。
如何让它适用于其他文件类型?
您的问题是因为您在读取二进制文件时将其视为文本,这是错误的。
使用这个来读取文件:
然后将字节数组进行Base64编码
Jmeter 有很多方法可以将变量转换为 "Base64",下面是一些选项
- Bean shell 预处理器
- BeanShell 后处理器
- BeanShell 采样器。
下面是"bean shell"代码,用于"Bean shell pre processor"将变量转换为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
Base64 之后:amR3cW9lZW5kd3FxbTEyc2R3
使用 Jmeter 转换:
使用 base64 网站转换:
试试这个
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));
因为 Groovy 现在是每个 JMeter Sampler、Pre- & PostProcessor、Listener、Assertion 等中首选的 JSR223 脚本语言。这项任务非常简单。
def fileAsBase64 = new File("${filepath}").bytes.encodeBase64().toString()
vars.put("file", fileAsBase64)
或作为一个班轮:
vars.put("file", new File("${filepath}").bytes.encodeBase64().toString())
就是这样。
使用函数 ${__base64Encode(nameofthestring)}
对字符串值进行编码,使用函数 ${__base64Decode(nameofthestring)}
对字符串值进行解码。
替代方法是直接在用户定义变量中创建一个 groovy 函数作为
${__groovy(new File(vars.get("filepath")).bytes.encodeBase64().toString(),)}
我正在尝试在 Jmeter 中将文件编码为 Base64,以使用以下脚本测试 Web 服务:
String file = FileUtils.readFileToString(new File("${filepath}"), "UTF-8");
vars.put("file", new String(Base64.encodeBase64(file.getBytes("UTF-8"))));
这适用于 plain/text 文件,但不适用于其他文件类型。
如何让它适用于其他文件类型?
您的问题是因为您在读取二进制文件时将其视为文本,这是错误的。
使用这个来读取文件:
然后将字节数组进行Base64编码
Jmeter 有很多方法可以将变量转换为 "Base64",下面是一些选项
- Bean shell 预处理器
- BeanShell 后处理器
- BeanShell 采样器。
下面是"bean shell"代码,用于"Bean shell pre processor"将变量转换为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
Base64 之后:amR3cW9lZW5kd3FxbTEyc2R3
使用 Jmeter 转换:
试试这个
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));
因为 Groovy 现在是每个 JMeter Sampler、Pre- & PostProcessor、Listener、Assertion 等中首选的 JSR223 脚本语言。这项任务非常简单。
def fileAsBase64 = new File("${filepath}").bytes.encodeBase64().toString()
vars.put("file", fileAsBase64)
或作为一个班轮:
vars.put("file", new File("${filepath}").bytes.encodeBase64().toString())
就是这样。
使用函数 ${__base64Encode(nameofthestring)}
对字符串值进行编码,使用函数 ${__base64Decode(nameofthestring)}
对字符串值进行解码。
替代方法是直接在用户定义变量中创建一个 groovy 函数作为
${__groovy(new File(vars.get("filepath")).bytes.encodeBase64().toString(),)}