如何解析Jmeter响应并发出新请求

如何解析Jmeter响应并发出新请求,jmeter,Jmeter,我正在使用jMeter测试Tomcat应用程序。我需要解析jMeter响应并发出第二个请求。第一个响应如下所示: <responseData class="java.lang.String">&lt;html&gt;&#xd; &lt;body&gt;&#xd; ERROR=0&#xd; MSG=N/A&#xd; FILELIST=1555;1340778737370;1526545487;&#xd; VERSI

我正在使用jMeter测试Tomcat应用程序。我需要解析jMeter响应并发出第二个请求。第一个响应如下所示:

<responseData class="java.lang.String">&lt;html&gt;&#xd;
&lt;body&gt;&#xd;
ERROR=0&#xd;
MSG=N/A&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
VERSION=1.002&#xd;
URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
INTERVAL=0&#xd;
&lt;/body&gt;&#xd;
&lt;/html&gt;&#xd;
</responseData>
我知道有一些后处理器可以做到这一点,但不知道如何做到这一点。顺便说一句,第二个请求将从TomcatServlet下载一些文件,有没有办法让jMeter只下载流而不写入物理文件?这样我就可以对我的servlet进行负载性能测试。

部分响应使用


您可以使用ViewResultsTree侦听器在响应数据上测试正则表达式。只需在ViewResultsTree侦听器左侧面板底部的下拉框中选择Regexp tester即可。

好的,您已经知道如何从响应中提取url,我在上一个回答中描述了如何:

但在这里,我将进一步阐述这一点。所以你有了采样器,你已经得到了$
{url}
。现在您需要
文件列表
并组装新的url

假设您已经有了请求和url提取器。添加新的
正则表达式提取器

右键单击请求采样器->后处理器->正则表达式提取器

Reference Name : FILELIST
Regular Expression : FILELIST=(\S+)
Template : $1$
Match No. (0 for Random): 1
现在您有了1个请求采样器和2个正则表达式提取器。您需要添加额外的后处理程序才能组装新的url

右键单击请求采样器->后处理器->BSF后处理器

Script language
下的language下拉列表中选择
beanshell
,并在大字段
Script:
中粘贴以下内容:

vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}");
现在您有了
${NEW_URL}
可以在测试中进一步使用

解决问题的方法总是不止一种,这一套看起来很难看,但却能达到目的。

在我的测试中,结果符合您的要求(调试采样器):

编辑:

我想我不明白你是怎么命名变量的。但最终结果是你在问题中描述的结果。请参阅工作示例附带的.jmx测试:


这是一个jmeter.jmx文件,使用2.6+版本的jmeter

@ant,根据您的帮助,目前我有sample1(它有3个后处理器:url/token extrator/bsf后处理器)和sample2用于发送新请求。但是仍然有一些错误,sample2没有获得正确的URL,请帮助找到我的调试采样器:[link]@ant,很抱歉我犯了一个可怕的错误。它现在在我这边起作用了,我非常感谢你的帮助。
vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}");
url=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;