lanhua1226 large avatar
测试学习小组  ›  jmeter

Jmeter文件上传接口测试的问题

By lanhua1226 at 一年前 , 6235 次浏览

今天用jmeter进行了附件上传的接口测试,几经折腾,大概找到问题的地方了,但是不知道如何解决,具体问题如下:
1。添加的http请求,消息头进行了配置
2。请求路径为

/Storage/Upload?Id=${uploadfile_dir}&type=Petition&sessionId=${Session}&fileType=0&SCWZ=0

3。在Files Upload里面进行了附件的配置,附件路径、参数名称、MIME类型也都配置正确
4。Use multipart/form-data for POST 也勾选了。
5。在结果树中请求显示如下:

POST http://192.168.5.71:8000/Storage/Upload?Id=44e757ce-7803-4358-b3f9-952813863b70&type=Petition&sessionId=d39664c0-5fcd-45ff-9106-9660099fbbdc&fileType=0&SCWZ=0

POST data:
--9nIn8wsZg0kW0QjFfRUu5yQ4trI7CveasFi-lNB
Content-Disposition: form-data; name="file"; filename="upfile.png"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

<actual file content, not shown here>
--9nIn8wsZg0kW0QjFfRUu5yQ4trI7CveasFi-lNB--

[no cookies]

Request Headers:
Connection: keep-alive
Accept-Language: zh-CN,zh;q=0.9
SESSION_ID: d39664c0-5fcd-45ff-9106-9660099fbbdc
Content-Type: multipart/form-data
Accept-Encoding: gzip, deflate
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Referer: http://192.168.5.71:8013/
Origin: http://192.168.5.71:8013
Content-Length: 53573
Host: 192.168.5.71:8000

6。返回值错误,后来跟踪到服务,发现是传到服务的字符流长度抛异常。
7。用fiddler进行了抓包比对,发现有一个地方不同,在headers中
Content-Type: multipart/form-data; 后面多了
;boundary=9nIn8wsZg0kW0QjFfRUu5yQ4trI7CveasFi-lNB
所以初步分析,是因为缺少了分界符,服务不知道获取哪些内容。

8。用fiddler进行调试,发现在上传附件时,随机生成分界符,然后再加到headers中。

请问下怎么能拿到动态生存的分界符,然后动态添加到Content-Type中呢?

7 回复
乙醇 medium avatar
#1 - 一年前
乙醇

这个应该是防csrf之类回放攻击的方式,思路是从表单页面上扣出相应的值,放到headers里去就好了

lanhua1226 medium avatar
#2 - 一年前
lanhua1226

@乙醇 我把页面找了一遍,没有找到这个值,查看了代码,给headers添加boundary的处理,是控件的api中的方法。
也用fiddler的compser中upload file添加过附件,发现他添加后就自动把boundary添加到消息头中了。
jmeter的附件上传没有这种处理方式

那我的解决方案是添加java sampler,自己封装请求来调用接口,还有没有其他简单些的方案呀?

lanhua1226 medium avatar
#3 - 一年前
lanhua1226

@乙醇 问题解决了,手动添加的请求,没有勾选“browser-compatible headers”,勾选后就可以了。

hwztester medium avatar
#5 - 一年前
hwztester

我也遇到了这个问题 postdata 可以随机生成这个,但是 header里面怎么添加这个? 又不能写死,也不能不写。

hwztester medium avatar
#6 - 一年前
hwztester

请问下怎么能拿到动态生存的分界符,然后动态添加到Content-Type中呢?我勾选了 也不行

bingdian medium avatar
#7 - 12 个月前
bingdian   via iPhone

我现在遇到了跟你一样的问题,能否发个demo,我参考一下呢?

测试学习小组 — 软件测试学习讨论区
现在注册
已注册用户请 登入
内容分享

欢迎关注我们的公众号: 测试圈TC


小贴士

你的问题在测试教程网中能找到答案