我正在尝试使用 JMeter 测试上传文件的静态端点,但收到 400 错误。让我惊讶的一件事是边界值;我提供的与请求中显示的不一样。我可以毫无问题地在浏览器中使用端点,并且我已经复制了 FF 中开发人员工具中显示的 header 。
以下是 JMeter 的相关信息:
结果选项卡:
线程名称:Asdf - 负载测试 1-1
示例开始时间:2017-06-05 08:47:46 EDT
加载时间:159
连接时间:28
延迟:159
大小(以字节为单位):438
发送字节数:821003
header 大小(以字节为单位):438
正文大小(以字节为单位):0
样本数量:1
错误计数:1
数据类型(“文本”|“bin”|“”):
响应代码:400
响应消息:错误请求
响应 header :
HTTP/1.1 400 错误请求
日期:2017 年 6 月 5 日星期一 12:47:46 GMT
服务器:Apache/2.4.25 (Win64) OpenSSL/1.0.2k
缓存控制:无缓存、无存储、max-age=0、必须重新验证
编译指示:无缓存
过期:0
严格传输安全:max-age=31536000;包含子域
X-XSS-保护:1;模式= block
X 框架选项:拒绝
X-Content-Type-Options:nosniff
缓存控制:无缓存,必须重新验证
内容长度:0
连接:关闭
HTTPSampleResult 字段:
内容类型:
数据编码:空
请求选项卡:
发布https://localhost/my/rest/endpoint
发布数据:
--9amm365-gMmimP70lvs9jIvlIxOfkocUN
内容处置:表单数据;名称=“可解析”;文件名=“asdf.docx”
内容类型:application/vnd.openxmlformats-
officedocument.wordprocessingml.document
内容传输编码:二进制
--9amm365-gMmimP70lvs9jIvlIxOfkocUN--
[无cookie]
请求 header :
连接:保持 Activity 状态
内容类型:多部分/表单数据;边界=--Uc_2uLvcVgc7SqvzIJxR3encUKw- f7w9
接受编码:gzip、deflate、br
接受语言:en-US,en;q=0.5
接受:application/json、text/plain、/
X-Request-OnBehalfOf:某些用户uuid
X-Requested-With:XMLHttpRequest
内容长度:820532
主机:本地主机
用户代理: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);
}
最佳答案
如果您像 Testing REST API File Uploads in JMeter 中所述手动构建请求文章 - 确保您有 HTTP Request 的 Use multipart/form-data for POST
框未检查采样器。
反之亦然,如果您勾选此框,则无需覆盖 Content-Type标题
<小时/>我相信最简单的方法就是使用HTTP(S) Test Script Recorder记录您的文件上传事件(只需确保将 asdf.docx
文件复制到 JMeter 安装的“bin”文件夹中即可)
关于java - JMeter 400错误文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44369668/