如何在Jmeter中编码附件到Base64?

时间:2016-04-11 14:58:19

标签: web-services jmeter base64 automated-tests jmeter-plugins

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

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

这适用于普通/文本文件,不能正确用于其他文件类型。

我怎样才能让它适用于其他文件类型?

6 个答案:

答案 0 :(得分:4)

Jmeter有很多药水可以将变量转换为" Base64",下面是几个选项

  1. Bean shell预处理器
  2. BeanShell PostProcessor
  3. BeanShell Sampler。
  4. 下面是" 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

    enter image description here

    enter image description here 转换使用base64站点:

    enter image description here

答案 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(),)}