【问题标题】:JMeter Multipart JSON Request Form DataJMeter 多部分 JSON 请求表单数据
【发布时间】:2016-12-17 11:54:44
【问题描述】:

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

我有一个 HTTP 标头管理器,它的内容类型设置为 multipart/form-data;边界=AaB03x。我选择了“使用多部分/表单数据进行 POST”。

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

`-----------------------------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`

当我运行它时,我看到请求没有正确发送正文,而是发送了一些随机数据,

发布数据:

--vKOghkU7riRQbaANmmGpMs7j9TxCTUp3S2T0vE--

并给出错误响应,

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

我的第二个问题是: 请求的 part3 发送一个文件上传。我可以以某种方式传递文件路径吗?

【问题讨论】:

    标签: jmeter multipartform-data


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

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

    【讨论】:

      【解决方案2】:

      您应该尝试将 JSON 数据作为参数发送。还将您的文件路径放在该部分中...甚至某些服务器实际上并不需要明确声明 MIME 类型,您可以使用诸如this one 之类的在线工具检查您的。

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

      【讨论】:

      • 是否可以将单独的标题传递给每个部分?
      • @Dmitrit @Ivan:这个问题对我来说是我无法修改 jMeter 填充的一些标题。例如,我允许 jMeter 填充'Content-Type: multipart/form-data; boundary=ZWOOhTp6nROvG_qX2xFawuP8Y8VG97a0ICnMBy6L; charset=US-ASCII'。但我根本不希望指定字符集。另一方面,如果我在标头管理器中将 Content-Type 定义为标头,那么我指定的多部分边界不会在请求正文中使用。
      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 2012-03-16
      • 2016-11-11
      • 2013-02-12
      • 2018-07-02
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多