JMeter 400错误文件上传

时间:2017-06-05 13:06:30

标签: java spring jmeter

我正在尝试使用JMeter测试用于上传文件的restful端点,但是我收到400错误。跳出来的一件事是边界值;它与我在请求中显示的不一样。我可以毫无问题地在浏览器中使用端点,并且我已经复制了FF中开发人员工具中显示的头文件。

以下是JMeter的相关信息:

结果标签:

线程名称:Asdf - 负载测试1-1

样本开始时间:2017-06-05 08:47:46美国东部时间

加载时间:159

连接时间:28

延迟:159

字节大小:438

已发送字节:821003

标头大小(以字节为单位):438

正文大小(以字节为单位):0

样本数:1

错误计数:1

数据类型(“text”|“bin”|“”):

回复代码:400

回复消息:错误请求

回复标题:

HTTP / 1.1 400错误请求

日期:星期一,2017年6月5日12:47:46 GMT

服务器:Apache / 2.4.25(Win64)OpenSSL / 1.0.2k

缓存控制:无缓存,无存储,最大年龄= 0,必须重新验证

Pragma:no-cache

过期:0

严格 - 运输 - 安全:max-age = 31536000; includeSubDomains

X-XSS-Protection:1;模式=块

X-Frame-Options:DENY

X-Content-Type-Options:nosniff

缓存控制:无缓存,必须重新验证

内容长度:0

连接:关闭

HTTPSampleResult字段:

ContentType:

DataEncoding:null

请求标签:

POST https://localhost/my/rest/endpoint

POST数据:

- 9 amm365-gMmimP70lvs9jIvlIxOfkocUN

内容 - 处置:表单数据; NAME = “语法分析”;文件名= “asdf.docx”

Content-Type:application / vnd.openxmlformats -

officedocument.wordprocessingml.document

Content-Transfer-Encoding:二进制

- 9 amm365-gMmimP70lvs9jIvlIxOfkocUN -

[没有饼干]

请求标题:

连接:保持活力

内容类型:multipart / form-data;边界= - Uc_2uLvcVgc7SqvzIJxR3encUKw- f7w9

接受编码:gzip,deflate,br

接受语言:en-US,en; q = 0.5

接受:application / json,text / plain, /

X-Request-OnBehalfOf:some-user-uuid

X-Requested-With:XMLHttpRequest

内容长度:820532

主持人:localhost

User-Agent:Apache-HttpClient / 4.5.3(Java / 1.8.0_121)

响应数据标签为空白。

服务器端实施:

@POST
@Override
@EnhancedDetail
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("my/rest/endpoint")
public Response uploadProduct(@PathParam("id") final String id, MultiPart multipart) throws IOException {
    return processMultiFileUpload(id, multipart, MultiPartUploadType.DRAFT, false);
}

2 个答案:

答案 0 :(得分:1)

如果您按照Testing REST API File Uploads in JMeter文章中的描述手动构建请求,请确保未检查HTTP Request采样器的std::chrono::high_resolution_clock框。

反之亦然,如果勾选此框,则无需覆盖Content-Type标题

我认为最简单的方法就是使用HTTP(S) Test Script Recorder录制文件上传事件(只需确保将Use multipart/form-data for POST文件复制到JMeter安装的" bin"文件夹中)

答案 1 :(得分:0)

我明白了。我将HTTP请求上的客户端实现更改为Java。我读过的所有内容都说使用了HttpClient4,但我尝试了Java并且它有效。