在jmeter中发布请求后500代码错误响应

时间:2014-07-06 08:30:58

标签: ajax jmeter http-post badboy

我已经使用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)

任何人都可以解释为什么我会收到这个错误?

2 个答案:

答案 0 :(得分:1)

你能发布其余的堆栈跟踪吗?它没有暴露主要原因,原因可能不同。

我希望如果您尝试对4.1.7或更高版本的Alfresco系统进行性能测试,请求可能会因为CSRF过滤器保护而失败,该过滤保护是通过cookie设置的,需要以Alfresco-CSRFToken标头的形式发送。

要绕过它,请考虑以下事项:

  1. 在测试计划中添加HTTP Cookie Manager
  2. jmeter.properties 文件中(位于JMeter安装的/ bin文件夹下)定义以下属性:CookieManager.save.cookies=true
  3. 重新启动JMeter(属性更改不是动态的)
  4. 添加HTTP Header Manager作为失败请求的子项。填充如下:

    • 标题1
      • 姓名:Alfresco-CSRFToken
      • 价值:${__javaScript(decodeURIComponent("${COOKIE_Alfresco-CSRFToken}"),)}
    • 标题2
      • 姓名:Content-Type
      • 价值:application/json;charset=UTF-8
  5. 希望这会有所帮助。

答案 1 :(得分:0)

这是因为服务器端的文件可能已损坏。主要是由于服务器方面的问题。尝试使用不同的网站来重现它。