我已经使用Badboy录制了一个脚本并将其导出到Jmeter。该脚本包含一个发起具有名称的文件的发布请求。
使用请求发送参数
noCache=1404378079862
{"alf_destination":"workspace://SpacesStore/${UUID}","prop_cm_name":"File _2","prop_cm_title":"","prop_cm_description":""}
每次运行测试计划时,我都会收到一条500错误代码(内部服务器错误)的POST请求响应,看起来像这样
{
"status" :
{
"code" : 500,
"name" : "Internal Error",
"description" : "An error inside the HTTP server which prevented it from fulfilling the request."
},
所以我使用chrome开发工具来捕获请求,我发现当我试图创建一个名称已经存在的文件服务器响应500错误代码时我也发现jmeter发送的请求与我用开发人员工具捕获的不同
听到是jmeter发出的那个:
POST HTTPS:// $ {服务器名} /共享/代理/露天/ API /类型/厘米%3acontent / formprocessor
并听到开发者工具捕获的那个:
POST https:// $ {ServerName} / share / proxy / alfresco / api / type / cm%3acontent / formprocessor?noCache = 1404586721426& {" alf_destination":" workspace:/ / SpacesStore / $ {UUID}"" prop_cm_name":" file_2," prop_cm_title":""" prop_cm_description& #34;:""," prop_cm_content":" Ramadan kareem"," prop_mimetype":" text / plain&#34 ;," prop_app_editInline":"真"}
我更改了我想要创建的文件的名称,但仍然收到相同的错误 我搜索了解决方案但没有改变。我试图在每次迭代后清除缓存和cookie,但它也没有用。
以下是jmeter的完整请求
POST https:// $ {server} / share / proxy / alfresco / api / type / cm%3acontent / formprocessor
POST数据: NOCACHE = 1404586721426&安培;%7B%22alf_destination%22%3A%22workspace%3A%2F%2FSpacesStore%2F $ {UUID}%22%2C%22prop_cm_name%22%3A%22file_2%2C%22prop_cm_title%22%3A%22%22 %2C%22prop_cm_description%22%3A%22%22%2C%22prop_cm_content%22%3A%22Ramadan +贾巴尔%22%2C%22prop_mimetype%22%3A%22text%2Fplain%22%2C%22prop_app_editInline%22%3A%22true %22%7D =
Cookie数据: $版= 0; JSESSIONID = 6508CDFBEF16F2D601CF1E672EB00D62.worker2; $ PATH = /共享/; alfLogin = 1404810408; $ PATH = /股; alfUsername3 = jmeter01; $ PATH = /股; NSC_NzTibsf_TTM = ffffffff09f01c8f45525d5f4f58455e445a4a42378b; $路径= /
请求标题: 连接:保持活力 Alfresco-CSRFToken:$ {COOKIE_Alfresco-CSRFToken} Content-Type:application / json; charset = UTF-8 内容长度:359 主持人:myshare.kfshrc.edu.sa User-Agent:Apache-HttpClient / 4.2.6(java 1.5)
任何人都可以解释为什么我会收到这个错误?
答案 0 :(得分:1)
你能发布其余的堆栈跟踪吗?它没有暴露主要原因,原因可能不同。
我希望如果您尝试对4.1.7或更高版本的Alfresco系统进行性能测试,请求可能会因为CSRF过滤器保护而失败,该过滤保护是通过cookie设置的,需要以Alfresco-CSRFToken
标头的形式发送。
要绕过它,请考虑以下事项:
CookieManager.save.cookies=true
添加HTTP Header Manager作为失败请求的子项。填充如下:
Alfresco-CSRFToken
${__javaScript(decodeURIComponent("${COOKIE_Alfresco-CSRFToken}"),)}
Content-Type
application/json;charset=UTF-8
希望这会有所帮助。
答案 1 :(得分:0)
这是因为服务器端的文件可能已损坏。主要是由于服务器方面的问题。尝试使用不同的网站来重现它。