我很难在Jmeter中上传文件(例如Upload.txt)和JSON数据。
查看结果树中的请求
POST http://localhost:8080/xxxx/custom/uploaddocument
POST data:
--jmeter_is_great
Content-Type: application/json; charset=UTF-8
{
"Document": {
"documentName": "TEST.txt",
"fullPath": "Test",
"priority": "M",
"referenceNo": "Ref12345",
"descrption": "Testfile",
"userDef1": "",
"userDef2": "",
"userDef3": "",
"userDef4": "",
"userDef5": "",
"userDef6": "",
"userDef7": "",
"userDef8": "",
"userDef9": "",
"userDef10": "",
"profile": {
"id": -2,
"index": [{
"id": -7,
"value": "Signature",
"type": "D"
}]
},
"ACL": {
"isInherit": false,
"permission": [{
"permissionType": "U",
"userID": 10001,
"groupID": "",
"roleID": "",
"permissionString": "ROPKFIAENTCMDHZVWGLUSB",
"mustFlag": false
}]
}
}
}
--jmeter_is_great
Content-Type: text-plain
THIS IS TESTING FILE CONTENT
--jmeter_is_great--
[no cookies]
Request Headers:
Connection: keep-alive
Content-Length: 876
Content-Type: multipart/related; boundary=jmeter_is_great
响应数据
实际上,在文档中有一部分JSON,如下所示:
"content": {
"binary": [80, 97, 114, 97, 68, 77, 32, 84, 69, 83, 84, 32, 102, 105, 108, 101]
}
我尝试了如下请求标头,然后将带有“ Content”的整个JSON发送到api:
[HTTP标头] 授权:YXBpYWRtaW46cGFzc3dvcmQ = 内容类型:application / json
但是,还会引发HTTP 415响应错误。
我读过一些有类似问题的文章: Testing REST API File Uploads in JMeter
期待任何见识!
答案 0 :(得分:0)
您的Authorization
标头似乎格式不正确,例如:
A
Basic YXBpYWRtaW46cGFzc3dvcmQ=
请注意,绕过basic HTTP authentication in JMeter的更好方法是使用HTTP Authorization Manager,其配置如下:
http://localhost:8080/xxxx/
apiadmin
password
您的Content-Type
标头也不正确,您使用的是错误的boundary
,即在HTTP标头管理器中您有andytest
,在请求正文中有{{ 1}},它们必须匹配。
假设以上两点,我想提醒您,当您手动建立请求时,任何违反协议标准的行为(甚至多余或缺少空行或小写字符)都会破坏您的请求< / p>
所引用的文章假定使用Google Drive API进行演示,您的应用程序可能会以不同的方式工作,因此您可能必须重新考虑整个方法。尝试使用HTTP(S) Test Script Recorder记录您的文件上传记录(确保将jmeter_is_great
文件复制到JMeter的“ bin”文件夹中),以查看所生成的请求看起来像是错误的。
答案 1 :(得分:0)
我终于找到了解决方案,希望答案能帮助面临类似问题的任何人。
首先,如果抛出此错误,则为“ HTTP状态415-不支持的媒体类型”,这很可能是错误的Content-Type。
因此,我的方法是尝试 HTTP请求标头的所有可能的Content-Type,当Content-Type设置为multipart / form-data时,我发现错误代码从415变为500。
然后,我从一个有用的链接中了解到https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-2#file-upload
中的文件上传我将请求正文更改如下:
--boundary
Content-Disposition: form-data; name="documentJsonStr"
Content-Type: text/plain; charset=UTF-8
${myvar2}
--boundary
Content-Disposition: form-data; name="data"; filename="100MB.txt"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
${__FileToString(100MB.txt,,)}
--boundary--
$ {myvar2}由BeanShell PreProcessor设置,它包含字符串格式的Json请求。但是,取决于api接受的参数类型,它的配置可能不完全相同。
希望这很有用。