You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中用JSR223 PreProcessor Groovy构造multipart/form-data报错求解

解决JMeter中JSR223 PreProcessor构造multipart/form-data请求体的报错问题

报错原因

你遇到的错误是因为vars.put()仅支持存储字符串类型数据,而你试图存入的formData是MultipartFormEntity对象,类型不匹配导致调用失败。


方案一:直接用JMeter HTTP Request组件配置(推荐)

JMeter原生支持构造multipart/form-data请求,无需手写Groovy脚本,步骤如下:

  • 添加HTTP Request组件
  • 在「Parameters」标签页添加普通参数:
    • Name:payload,Value:some payload
  • 在「Files Upload」标签页添加文件:
    • File Path:path/to/file(你的文件实际路径)
    • Parameter Name:file
    • MIME Type:application/octet-stream
  • 确认HTTP Request的「Implementation」选项为HttpClient4(默认配置)

配置完成后,JMeter会自动生成符合要求的multipart/form-data请求体。


方案二:Groovy脚本构造并转换为字符串存储(复杂场景适用)

如果必须通过JSR223 PreProcessor构造,需将MultipartFormEntity转换为可存储的字符串格式,修改后的脚本如下:

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
import java.util.Base64

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()

// 将实体转换为字节数组后编码为Base64字符串存储
def formDataBytes = EntityUtils.toByteArray(formData)
def formDataBase64 = Base64.getEncoder().encodeToString(formDataBytes)
vars.put("formDataBase64", formDataBase64)

// 提取包含boundary的Content-Type头并存储
def contentType = formData.getContentType().getValue()
vars.put("contentType", contentType)

配套HTTP Request配置:

  1. 「Method」选择POST
  2. 「Body Data」中填写:${__base64Decode(${formDataBase64},)}
  3. 添加HTTP Header Manager,新增Content-Type头,值为${contentType}

这样就能正确构造并发送multipart/form-data请求。


内容的提问来源于stack exchange,提问作者Chakkapong Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 11:17:30