6

我正在使用 JMeter 对我的 JSF 应用程序进行一些负载测试,但我无法通过页面传递 ViewState。ViewState 变量根本不会被提取,或者它不会在页面中传递。

我已经用代理服务器记录了我的测试步骤,它是这样的:

第一个 GET 请求

我在第一个 GET 请求中添加了 Regex 提取器。测试了正则表达式,它是正确的。

第一个 POST 请求

在每个 POST 请求中,我用我的变量替换硬连线的视图 ID。

当我发送请求时,我得到以下内容:

已发送请求

POST 参数不正确,因为它发送变量的名称。

发布数据:

loginForm%3ArequestToken=&loginForm%3Ausername=heller&loginForm%3Apassword=%21QAYxsw2%A7EDC&loginForm%3AloginButton=Anmelden& com.sun.faces.VIEW=%24%7BjsfViewState%7D &loginForm=loginForm

你能告诉我在这里做错了什么吗?
谢谢!

4

2 回答 2

2

ViewState 参数是一个编码值(我相信是 Base64 吗?),如果通过 url 在 GET 请求中传递,可能包含不合适的值。URL 参数通常经过编码,以便在请求到达服务器时可以表示和解码特殊值(例如空格 -> %20)。

这里的问题是以下请求是一个 POST,这意味着参数不需要进行 URL 编码。

com.sun.faces.VIEW=%24%7BjsfViewState%7D&loginForm=loginForm

上面显示JMeter或其他一些进程正在对请求中的ViewState进行URL编码,这是不正确的。ViewState 的值应该简单地按原样发送。

于 2013-02-28T13:05:55.153 回答
2

发现我的问题:正则表达式错误,因此在响应中找不到任何内容。我不得不更改正则表达式。添加默认值“未找到”后注意到它。

于 2013-02-28T17:00:14.787 回答