Rest 如何将文件字节包含到Jmeter中的POST请求正文中?(使用什么编码)

Rest 如何将文件字节包含到Jmeter中的POST请求正文中?(使用什么编码),rest,jmeter,Rest,Jmeter,我必须执行来自Jmeter的POST请求。我使用默认的HTTPRequest采样器,其中我指定测试应用程序可以理解的JSON结构。JSON的一部分必须包含来自pdf文件的二进制数据 为了读取文件,我在设置线程组中使用BeanShellSampler: File file = new File(bsh.args[0]); try { FileInputStream fis = new FileInputStream(file); byte[] array = new byte[(

我必须执行来自Jmeter的POST请求。我使用默认的HTTPRequest采样器,其中我指定测试应用程序可以理解的JSON结构。JSON的一部分必须包含来自pdf文件的二进制数据

为了读取文件,我在设置线程组中使用BeanShellSampler:

File file = new File(bsh.args[0]);

try {
    FileInputStream fis = new FileInputStream(file);
    byte[] array = new byte[(int)file.length()];
    log.info("String is read.");
    fis.read(array);
    vars.put("fileEntity", new String(array, "cp1252"));
} catch (e) {
    e.printStackTrace();
    log.error(e.getMessage());
}
问题是,当我用Fiddler查看请求时,我看到了差异,二进制对象与Postman的请求相比是如何表示的:

我认为在BeanShellSampler中创建String对象时,编码有问题。什么编码是正确的

我尝试使用RawDataSource插件,但由于以下两个原因无效:

  • 它无法读取我的文件,并显示“读取下一个块时出错”
  • 它使用与我读取文件相同的方法,但使用UTF8编码。我也尝试过这种编码,但没有成功

  • 我的期望是你的
    fis.read(数组)函数依赖于默认值,默认值可以是或不是
    cp1252

    我建议引入并明确指定编码,如:

    InputStreamReader isr = new InputStreamReader(fis,"cp1252");
    

    还要注意,对于脚本编写,主要是因为根据我最近的调查,PDF文件不能表示为字符串变量,不是吗?