2016-09-19 106 views
1

注意 - 我检查了BlazeMeter Tutorial,它将doc作为Body Data上载,而我使用File Upload选项卡。使用JMeter将文件上载到rest API

这里是我的要求的样子 -

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进行文件上传,我假设我错了d使用JMeter进行一些配置。卷曲看起来像 -

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Bearer <>' -F [email protected]"test.pdf" 'https://xxx' 

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

+0

我也曾尝试用MIME类型'''多部分/形式data'''但无济于事 – Tarun

回答

1

如果你能成功地通过卷曲上传文件,你为什么不只是通过JMeter HTTP(S) Test Script Recorder像记录上传:

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

如果您还需要建立请求手动考虑两个重要的位:

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

  2. 最显著,您需要提供“参数名称”,据HTTP Request Sampler Manual

    对于POST和PUT方法,如果没有要发送的文件,和的姓名(或名称)参数(s)被省略,然后通过连接参数的所有值来创建主体。

    展望在你的情况下, “参数名” curl command manual应该是upload_file

所以最终的配置应该是这样的:

File Upload Configuration

Performance Testing: Upload and Download Scenarios with Apache JMeter指南上面的步骤详细描述。

+0

HTTPS测试记录是记录浏览器的请求,而不是从卷曲转换为JMeter的格式,是不是? 我检查的multipart/form-data的复选框,添加PARAMETER_NAME作为upload_file和,但尚未得到400错误。 这是请求的样子 - https://justpaste.it/edit/12989825/54ff7f90 – Tarun

+0

HTTP(S)测试记录是记录所有HTTP或HTTPS请求没有起源问题。 FYI:所有的浏览器都被发送HTTP请求和响应渲染我 –

+0

使用http4实现与400错误失败,则切换到Java客户端的工作完美。感谢您在记录点了。 – Tarun

0

感谢您对HTTP的JAVA实现!文件上传工作再次为我工作自从2.13

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

希望有帮助!

相关问题