Web services 如何在Jmeter中对Base64的附件进行编码?

Web services 如何在Jmeter中对Base64的附件进行编码?,web-services,jmeter,base64,automated-tests,jmeter-plugins,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")))); 这适用于纯文本文件,但不适用于其他文件类型 如何使其适用于其他文件类型?您的问题来自这样一个事实,即在读取二

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

String file = FileUtils.readFileToString(new File("${filepath}"), "UTF-8");
vars.put("file", new String(Base64.encodeBase64(file.getBytes("UTF-8"))));
这适用于纯文本文件,但不适用于其他文件类型


如何使其适用于其他文件类型?

您的问题来自这样一个事实,即在读取二进制文件时,您将其视为文本,这是错误的

使用此选项读取文件:


然后在Base64中编码字节数组。Jmeter有很多方法可以将变量转换为“Base64”,下面是一些选项

  • Bean外壳预处理器
  • 比恩希尔后处理器
  • 比恩希尔取样器
  • 下面是“BeanShell”代码,它在“BeanShell预处理器”中用于将变量转换为Base64

    import org.apache.commons.codec.binary.Base64;
    字符串emailIs=vars.get(“会话”);
    byte[]encryptedUid=Base64.encodeBase64(emailIs.getBytes());
    put(“genStringValue”,新字符串(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采样器、前后处理器、侦听器、断言等的首选JSR223脚本语言,所以此任务非常简单

    def fileAsBase64 = new File("${filepath}").bytes.encodeBase64().toString()
    vars.put("file", fileAsBase64)
    
    或作为一个班轮:

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

    就是这样。

    使用函数
    ${uuu base64Encode(nameoftstring)}
    对字符串值进行编码,
    ${uuu base64Decode(nameoftstring)}
    对字符串值进行解码。

    我尝试了以下操作,但没有成功。byte[]bytes=FileUtils.readFileToByteArray(新文件(“${filepath}”).getBytes());put(“文件”,新字符串(Base64.encodeBase64(字节));