当前位置: 首页 > 知识库问答 >
问题:

如何将JSON正文和视频文件发布到JMeter上的APIendpoint?

卢普松
2023-03-14

我无法在JMeter上一个请求中同时发送JSON正文数据和视频/图像文件。它给出了一个401未授权,即使我已经在HTTP头管理器中添加了授权头。邮件头的相同请求在Postman上很好地工作。

我已经在这里参考了这本指南,但没有运气。

https://www.blazemeter.com/blog/testing-advanced-rest-api-file-uploads-jmeter/

Content-Type: multipart/form-data

{
    "email": "xyz@gmail.com",
    "password": "xyz",
    "file": ${__FileToString("/Downloads/SampleVideo_1280x720_1mb.mp4")}

}

取样器结果:

Thread Name: Thread Group 1-1
Sample Start: 2019-09-30 14:26:25 IST
Load time: 2922
Connect Time: 838
Latency: 2922
Size in bytes: 202
Sent bytes:1056397
Headers size in bytes: 202
Body size in bytes: 0
Sample Count: 1
Error Count: 1
Data type ("text"|"bin"|""): 
Response code: 401
Response message: Unauthorized


HTTPSampleResult fields:
ContentType: 
DataEncoding: null

请求:

POST data:
--o3F8APyqP080W3wk0N_-96jzl11Bfsa
Content-Disposition: form-data; name="file"; filename="SampleVideo_1280x720_1mb.mp4"
Content-Type: video/mp4
Content-Transfer-Encoding: binary

<actual file content, not shown here>
--o3F8APyqP080W3wk0N_-96jzl11Bfsa--


[no cookies]

共有1个答案

公孙辰龙
2023-03-14

JMeter应该做实际浏览器(或使用APIendpoint的其他应用程序)正在做的事情。

如果浏览器(或应用程序)发送了2个请求-JMeter也必须发送2个请求。如果浏览器(或应用程序)发送了1个请求-JMeter必须发送1个请求。在1个请求的情况下,我希望您应该发送application/json作为Content-Type头的值,就像您引用的指南中所做的那样。

--boundary
Content-Type: application/json; charset=UTF-8



JSON Metadata
--boundary
Content-Type: file MIME type



File content
--boundary--

答案很简单:只需使用JMeter的HTTP测试脚本记录器记录请求,JMeter就会对HTTP请求采样器、HTTP头管理器等进行适当配置。您需要做的只是实现参数化和相关性,以便脚本能够成功地重播。

一个重要的一点:在录制期间,您需要在JMeter的“bin”文件夹中有samplevideo_1280x720_1mb.mp4文件,因为现代浏览器不会返回完整路径,因此只有当文件位于其“bin”文件夹中时,JMeter才能正确捕获文件上传请求。更多信息:使用JMeter记录文件上载

 类似资料:
  • 问题内容: 如何使用AngularJS发送POST请求?JSON部分是必需的,但文件不是必需的。我已经根据其他博客文章尝试过此方法,但是它不起作用。我收到一个 错误的请求400错误 。 200点正确答案将被添加 问题答案: 我已经用一个简单的Spring后端测试了您的代码,并且工作正常: 我已将您的客户端代码与angular v1.1.5一起使用: 请求看起来像这样(从Chrome控制台的“网络”

  • 我一直试图为一个SAML安全的Web服务编写jmeter负载测试。因此,我有一个http请求采样器,它获取访问代码并存储在一个名为access_code的变量中。但是Web服务以以下形式接受post请求: api.service.edu/api/authentication,主体数据为{“code”:“${access_code}”,“redirect_uri”:“some site”}。 但是每

  • 问题内容: 我在JMeter中将CSV格式用于数据文件。我们的副总裁希望将格式更改为JSON。如何从磁盘读取JSON文件? 问题答案: 您至少有2个选择: 使用HTTP请求采样器和协议,例如: JSON文件基本上是纯文本文件,因此您将能够使用JSON提取器或JSON路径提取器来解析JSON数据并将结果存储到JMeter变量中,以供以后重用 参考文献: 使用JSR223测试元素和Groovy语言。G

  • 问题内容: 所以,当我使用Koush的离子时,我能够使用一个简单的方法将json正文添加到我的帖子中 我要转到OkHttp,但我确实没有找到一种很好的方法。我到处都是错误400。 有人有主意吗? 我什至尝试手动将其格式化为json字符串。 编辑:对于以后在这个问题上遇到麻烦的人,这是我的解决方案,它异步执行所有操作。所选答案正确,但是我的代码有些不同。 要做更多的工作,主要是因为您必须回到UI线程

  • 如果一些文件是带音频的视频,而一些文件只是音频,是否可以连接多个文件。最终结果应该如下所示: 我认为这一定是可能的,因为我也可以结合一个大的音频文件和一个小的视频与FFMPEG。结果将是一个视频文件,其中最后一帧只是冻结,但音频仍然播放。我想实现相同的结果,要么冻结最后一帧或简单的黑色帧。这可能吗?

  • 我知道如何发布json,我知道如何在Postman中以多部分形式发布文件。但我怎样才能同时做到这两件事呢。例如: 以下是我要发布的jason: 那么如何发布位于以及上面的json? 更新:请注意,我希望使用JSON发送文件,所以我的问题不同于使用Postman发送多部分表单。