java - JMeter 400错误文件上传

标签 java spring jmeter

我正在尝试使用 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 RequestUse 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/

相关文章:

jms - 使用 JMeter jms 点对点队列在 Jmeter 负载测试中添加授权

java - 在Jmeter中,如何等待上一个采样器(JDBC请求)完成然后启动新的采样器请求(Http请求)

java - 我的团队不主张

java - 如何在 Java 中针对此 LDAP 进行 LDAP 搜索/身份验证

java - Spring Boot 嵌入式 Tomcat 线程池创建开销

java - 使用Spring编写DB单元测试: java. lang.IllegalStateException:无法加载ApplicationContext

java.lang.System.currentTimeMillis() 替换方法

java - 创建类加载器以从字节数组加载 JAR 文件

spring - Eureka 续订阈值和续订(最后一分钟)

java - 将字符串中的字符替换为其他字符会产生异常