使用JMeter将文件上载到rest API

时间:2016-09-19 09:53:17

标签: post file-upload jmeter

注意 - 我在使用“文件上传”标签时检查了BlazeMeter Tutorial上传文档为正文数据的内容。

以下是我的请求的显示方式 -

enter image description here

在执行时,我得到以下请求 -

POST https://xxx

POST data:
<actual file content, not shown here>

[no cookies]

Request Headers:
Connection: keep-alive
Content-Type: multipart/form-data
Accept-Language: en-US
Authorization: bearer <>
Accept: application/json
Content-Length: 78920
Host: test-host
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_102)

请求失败,出现400错误 -

Response code: 400
Response message: Bad Request

由于我能够使用curl进行文件上传,我认为我错过了JMeter的一些配置。卷曲看起来像 -

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Bearer <>' -F upload_file=@"test.pdf"  'https://xxx'

在JMeter文件上传中我错过了什么?

4 个答案:

答案 0 :(得分:1)

如果您可以通过curl成功上传文件,为什么不通过JMeter HTTP(S) Test Script Recorder来记录上传内容,如:

curl -x http://localhost:8888 -X POST --header 'Content-Type....."

如果仍需要手动构建请求,请考虑两个重要部分:

  1. 您需要检查Use multipart/form-data for POST

  2. 最重要的是,您需要提供&#34;参数名称&#34;,根据HTTP Request Sampler Manual

      

    对于POST和PUT方法,如果没有要发送的文件,并且省略了参数的名称,则通过连接参数的所有值来创建正文。

    在您的案例中查看curl command manual&#34;参数名称&#34;应为upload_file

  3. 所以最终配置应如下所示:

    File Upload Configuration

    有关详细说明的上述步骤,请参阅Performance Testing: Upload and Download Scenarios with Apache JMeter指南。

答案 1 :(得分:1)

我的后端服务器是用 Java 实现的,在文件上传请求中,我必须选择实现为 Java!

enter image description here

这里是文件上传部分 enter image description here

答案 2 :(得分:0)

感谢您对HTTP的JAVA实现!文件上传对我来说再次起作用,自2.13以来它还没有工作

这是我的帖子,其中: 我有同样的问题...认为jmeter做错了,因为这些东西在2.13中为我工作...自从版本3开始以来没有工作。很好......在某个地方发了一个帖子说,使用HTTP的JAVA实现工作。你猜怎么着?它确实对我有用!!!我一直在努力试图剖析POST的每个部分。我一直这样做,只需要JAVA实现HTTP和瞧!

希望有所帮助!

答案 3 :(得分:0)

在Jmeter的“高级”选项卡中使用Java实现的另一种投票。我的标头和正文在邮递员和jmeter之间完全相同,但是直到我更改为Java实现,它才上传我的文件(响应代码为415)。