Jmeter with multipart/form-data

tjrkku2a  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(157)

在Jmeter中,我想使用JSR 223 PreProcessor groovy准备multipart/form-data
我尝试像这样使用vars.put(“formData”,formData)

import org.apache.http.entity.ContentType
import org.apache.http.entity.mime.MultipartEntityBuilder
import org.apache.http.entity.mime.content.FileBody
import org.apache.http.entity.mime.content.StringBody
import org.apache.http.util.EntityUtils

def filePath = "path/to/file"
def file = new File(filePath)

def payload = "some payload"

def builder = MultipartEntityBuilder.create().setCharset(java.nio.charset.StandardCharsets.UTF_8)

builder.addPart("payload", new StringBody(payload, ContentType.TEXT_PLAIN))
builder.addPart("file", new FileBody(file, ContentType.APPLICATION_OCTET_STREAM, file.name))

def formData = builder.build()

vars.put("formData", formData)

并得到错误“No signature of method:org.apache.jmeter.threads.JMeterVariables.put()适用于参数类型:(String,org.apache.http.entity.mime.MultipartFormEntity)”如果我想在脚本中准备multipart/form-data,然后在HTTP请求中使用它,我应该怎么做?

txu3uszq

txu3uszq1#

  1. vars代表JMeterVariables类示例。vars.put()函数假设第二个参数是String,并且您正在尝试传递其他内容。如果这是你想要的,你应该使用vars.putObject()。或者您需要先以某种方式将实体转换为String
    1.我认为你根本不需要在Groovy中这样做,你可以使用普通的JMeter的HTTP请求采样器来执行多部分请求,你可以将“payload”放入请求参数中,将文件放入“Files Upload”并勾选Use multipart/form-data框:

也可以使用HTTPSamplerProxy类的sampler快捷方式以编程方式完成
有关上述以及其他JSR223测试元素可用的API简写的更多信息,请参见Top 8 JMeter Java Classes You Should Be Using with Groovy文章

相关问题