Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JMeter测试JSF时提取ViewState_Java_Jsf_Jmeter - Fatal编程技术网

Java 使用JMeter测试JSF时提取ViewState

Java 使用JMeter测试JSF时提取ViewState,java,jsf,jmeter,Java,Jsf,Jmeter,我正在使用JMeter对我的JSF应用程序进行一些负载测试,但在页面中传递ViewState时遇到了问题。ViewState变量根本不会被提取,或者不会在页面中传递 我用代理服务器记录了我的测试步骤,如下所示: 我在第一个GET请求中添加了Regex提取器。测试了正则表达式,结果是正确的 在每个POST请求中,我用变量替换硬连线视图ID 当我发送请求时,我得到以下信息: POST参数不正确,因为它发送变量的名称 发布数据: loginForm%3RequestToken=&loginFor

我正在使用JMeter对我的JSF应用程序进行一些负载测试,但在页面中传递ViewState时遇到了问题。ViewState变量根本不会被提取,或者不会在页面中传递

我用代理服务器记录了我的测试步骤,如下所示:

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

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

当我发送请求时,我得到以下信息:

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

发布数据:

loginForm%3RequestToken=&loginForm%3UserName=heller&loginForm%3Password=%21QAYxsw2%A7EDC&loginForm%3LoginButton=Anmelden&com.sun.faces.VIEW=%24%7BjsfViewState%7D&loginForm=loginForm

你能告诉我我做错了什么吗?

谢谢

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

这里的问题是,下面的请求是POST,这意味着参数不需要URL编码

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


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

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

POST请求以URL编码的形式发送,这是正确的。但我认为问题在于,提取的值根本没有在请求中设置,因为我将变量的名称视为com.sun.faces.VIEW的值,而不是从上一个请求的响应中提取的实际值。