我正在尝试使用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);
}
答案 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并且它有效。