如何在jmeter中将二进制post主体设置为HTTPSamplerProxy?

如何在jmeter中将二进制post主体设置为HTTPSamplerProxy?,jmeter,Jmeter,在jmeter测试中,我在HttpRequest步骤之前运行了一个BSF预处理器步骤(使用groovy)。在这个HttpRequest步骤中,我需要发送一篇包含二进制数据的帖子,但是我的二进制数据是动态计算的。如何将此二进制数据设置为请求的post正文?我看到HTTPRequest可以选择从文件执行二进制post。但我不想为每个请求创建一个临时文件 谢谢,从jmeter 2.6版开始,没有办法做到这一点。二进制体的Post需要文件输入HttpSampleProxy#setHTTPFiles(HT

在jmeter测试中,我在HttpRequest步骤之前运行了一个BSF预处理器步骤(使用groovy)。在这个HttpRequest步骤中,我需要发送一篇包含二进制数据的帖子,但是我的二进制数据是动态计算的。如何将此二进制数据设置为请求的post正文?我看到HTTPRequest可以选择从文件执行二进制post。但我不想为每个请求创建一个临时文件


谢谢,

从jmeter 2.6版开始,没有办法做到这一点。二进制体的Post需要文件输入HttpSampleProxy#setHTTPFiles(HTTPFileArg[]文件)。HTTPFileArg只包含文件系统上实际文件的路径。UI有一个选项可以将post正文设置为文本,但它使用的是HttpSampleProxy#setArguments(参数值)。并且参数只使用文本体而不是二进制。我不知道如何实例化这个对象。

我对
setArgument
有问题,因为它会对内容进行uri编码。
addNonEncodedArgument
不执行uri编码,但如果已经有一些参数,则不会将其设置为正文。 对我来说,这在任何情况下都有效:

    if(((HTTPSamplerProxy)sampler).getArguments()==null){
        ((HTTPSamplerProxy)sampler).addNonEncodedArgument("body", body, "");
    }else{
        ((HTTPSamplerProxy)sampler).getArguments().getArgument(0).setValue(body);
    }