JMeter Multipart JSON 请求表单数据

JMeter Multipart JSON Request Form Data

我正在尝试通过 JMeter 构建一个使用多部分数据的 HTTP 请求 body。

我有一个 HTTP Header 管理器 COntent-Type 设置为 multipart/form-data;边界=AaB03x。我选择了 'Use multipart/form-data for POST'.

然后我创建了一个数据 body,

`-----------------------------AaB03x
Content-Type: application/json
Content-Disposition: form-data; name="part1"
{"jsonKey1": "JsonValue1" }

-----------------------------AaB03x
Content-Type: application/json
Content-Disposition: form-data; name="part2"
{ 
  "jsonKey2": "JsonValue2"
}

-----------------------------AaB03x
Content-Type: application/octet-stream
Content-Disposition: form-data; name="part3"
File Content here!!!!

-----------------------------AaB03x`

当我 运行 这样做时,我发现请求没有正确发送 body,而是发送了一些随机数据,

POST数据:

--vKOghkU7riRQbaANmmGpMs7j9TxCTUp3S2T0vE--

并给出错误响应,

`{"errorMsg":"Unable read headers from MultipartStream.","messageCode":"UnableReadHeadersFromMultipartStream","httpStat     us":"BAD_REQUEST","requestName":"RequestName"}`

我的第二个问题是: 请求的第 3 部分发送要上传的文件。我可以通过某种方式传递文件路径吗?

  1. 鉴于您设置了自己的边界并手动构建请求,我相信您需要在 HTTP Request Sampler
  2. 取消选中 Use multipart/form-data for POST
  3. 如果您的文件编码不是很“奇特”,您可以尝试使用 __FileToString() 函数代替 File Content here!!!!

查看 RFC 7578,您似乎还需要在最后一行的末尾添加尾随 --

您应该尝试将 JSON 数据作为参数发送。还要将您的文件路径放在该部分...甚至某些服务器实际上不需要显式声明 MIME 类型,您可以使用 this one.

等在线工具检查您的文件路径

您的 HTTP 请求可能看起来像: