如何使用 JMeter 使用 REST API Put 方法上传文件

Posted

技术标签:

【中文标题】如何使用 JMeter 使用 REST API Put 方法上传文件【英文标题】:How to upload a file using REST API Put method using JMeter 【发布时间】:2018-03-06 13:40:17 【问题描述】:

我的查询上下文: 需要测试用于上传文件的 REST API Put 方法 使用的工具是JMeter。

我可以使用 POSTMAN 工具成功执行上述操作,但它在 JMeter 中不起作用。

这里是 JMeter 请求详细信息; 方法:放 路径:路径 标题 内容类型=多部分/表单数据;边界=----WebKitFormBoundary$随机

身体数据

------WebKitFormBoundary$random 内容处置:表单数据;名称="文件上传";文件名="C:\temp\abc.zip" 内容类型:application/octet-stream

------WebKitFormBoundary$random--

结果: "success":false,"errorMessages":"请求不包含附件" 响应码 = 400

感谢任何人可以提供帮助或提供使用 PUT 方法上传文件的更好方法。

谢谢, 乙

【问题讨论】:

如果我删除问题中给出的内容编码,则响应为 ""success":false,"errorMessages":"Request did not include an attachment"" Uploading file to rest API using JMeter的可能重复 @Kirti - 您建议的链接适用于 POST 方法,而我的查询适用于 PUT 方法。 是的,您需要将 Method 字段从 POST 更改为 PUT。但除此之外,这个问题是重复的,除非您提供更多详细信息,或者告诉我们您尝试该方法时什么不起作用。 【参考方案1】:

使用 MIME 类型:application/zip

您的文件上传设置在 JMeter 中应如下所示:

【讨论】:

【参考方案2】:

我的期望是您根本不会将尝试上传的文件与请求一起传递。如果您手动构建请求,则需要使用 __FileToString() 函数将文件正文添加到您的请求中。查看Testing REST API File Uploads in JMeter 文章了解更多详情。


另外,鉴于您的请求在 Postman 中有效,您应该能够使用 JMeter 的 HTTP(S) Test Script Recorder 捕获它

    将要使用 Postman 上传的文件复制到 JMeter 安装的“bin”文件夹中 启动 JMeter 的代理服务器。请参阅JMeter Proxy Step by Step 指南以了解如何操作。

    Start Postman using JMeter's HTTP(S) Test Script Recorder as a proxy 通过将--proxy-server 选项传递给它,例如:

    C:\Users\your_user_name\AppData\Local\Postman\app-x.x.x\Postman.exe --proxy-server=localhost:8888 
    
    在 Postman 中执行您的请求 JMeter 会将捕获的请求存储在 Test Plan -> Thread Group -> Recording Controller 下

【讨论】:

以上是关于如何使用 JMeter 使用 REST API Put 方法上传文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jmeter 中控制 REST API 的流/序列?

使用JMETER进行REST API测试(分步指南)

如何使用 JMeter 设置多部分边界

Jmeter +Eclipse测试火币网REST API 实战案例(上)

jmeter3.2 测试openstack-kilo cinder 的rest api

如何使用 Azure REST API 从管道中获取所有变量?