我尝试将文件编码为Jmeter中的Base64,以使用以下脚本测试Web服务:
String file = FileUtils.readFileToString(new File("${filepath}"), "UTF-8");
vars.put("file", new String(Base64.encodeBase64(file.getBytes("UTF-8"))));
这适用于普通/文本文件,不能正确用于其他文件类型。
我怎样才能让它适用于其他文件类型?
答案 0 :(得分:4)
Jmeter有很多药水可以将变量转换为" Base64",下面是几个选项
下面是" 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
Base64之后:amR3cW9lZW5kd3FxbTEyc2R3
使用Jmeter转换:
http://www.burnison.ca/articles/the-concurrency-of-concurrenthashmap
答案 1 :(得分:0)
您的问题来自于您在阅读错误时将二进制文件视为文本这一事实。
使用它来读取文件:
然后在Base64中编码字节数组
答案 2 :(得分:0)
尝试
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));
答案 3 :(得分:0)
由于Groovy现在是每种JMeter采样器,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())
就是这样。
答案 4 :(得分:0)
使用函数${__base64Encode(nameofthestring)}
编码字符串值,并使用${__base64Decode(nameofthestring)}
解码字符串值。
答案 5 :(得分:0)
对此的替代方法是直接在用户定义的变量中创建一个 groovy 函数
${__groovy(new File(vars.get("filepath")).bytes.encodeBase64().toString(),)}