Rest 如何将JSON正文和视频文件发布到JMeter上的API端点?

Rest 如何将JSON正文和视频文件发布到JMeter上的API端点?,rest,http,jmeter,performance-testing,load-testing,Rest,Http,Jmeter,Performance Testing,Load Testing,我无法在JMeter上的一个请求中同时发送JSON正文数据和视频/图像文件。即使我在HTTP头管理器中添加了授权头,它也会给出一个401未经授权的消息。在Postman上使用相同的头请求也可以很好地工作 我已经在这里参考了这个指南,但运气不好 取样器结果: Thread Name: Thread Group 1-1 Sample Start: 2019-09-30 14:26:25 IST Load time: 2922 Connect Time: 838 Latency: 2922 Size

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

我已经在这里参考了这个指南,但运气不好

取样器结果:

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]
请求:

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]
POST数据:
--o3F8APyqP080W3wk0N_U9;-96jzl11Bfsa
内容配置:表单数据;name=“file”;filename=“SampleVideo_1280x720_1mb.mp4”
内容类型:视频/mp4
内容传输编码:二进制
--o3F8APyqP080W3wk0N_U9;-96jzl11Bfsa--
[没有饼干]

JMeter应该做真实浏览器(或使用API端点的其他应用程序)正在做的事情

如果浏览器(或应用程序)发送2个请求,那么JMeter也必须发送2个请求。如果浏览器(或应用程序)发送1个请求,则JMeter必须发送1个请求。在1个请求的情况下,我的期望是,您应该像您所引用的指南中那样发送标题的值

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



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



File content
--boundary--
答案很简单:只需记录使用JMeter的请求,JMeter将提供HTTP请求采样器的正确配置,等等。您需要做的就是实现,以便脚本可以成功重播


重要的一点是:在录制过程中,您需要将
SampleVideo_1280x720_1mb.mp4
文件保存在JMeter的“bin”文件夹中,作为现代版,因此JMeter只有在文件位于其“bin”文件夹中时才能正确捕获文件上载请求。更多信息:

若要发布json正文和附件,您可以在JMeter HTTPS请求的参数选项卡中添加“电子邮件”和“密码”,并在文件上载选项卡中添加文件。

感谢您的回复!浏览器只发送一个带有json正文和视频文件的请求,我在postman上试过了,效果很好。但当我在jmeter上尝试同样的方法时,它就不起作用了。我试图检查主体数据是否被传递到请求,但它没有。在上面的指南中提到的添加内容类型的问题是,即使在我尝试了401之后,它仍然失败,并给出了一个401。正如这里提到的:``--boundary content type:file MIME type file content--boundary--``我应该在文件内容中添加什么?当我尝试使用FileToString函数时,如果您能够在浏览器中运行请求,并且在postman中,您应该能够在JMeter中记录请求,那么它就无法工作。也许文件体是经过编码/压缩的除了记录请求,还有其他解决方案吗?我尝试过使用录像机,但它是一个移动应用程序,即使在遵循有关在移动应用程序上录制的教程后也无法录制。通常情况下,应该可以录制移动应用程序,您只需要在设备上安装JMeter的证书。在Android 7+上,您还需要采取一些额外的步骤,查看文章了解更多详细信息感谢您的回复,但它不起作用。请看我上面的评论。您可以分享您添加到Jmeter的标题以及成功请求后向postman添加的内容吗?