当前位置: 首页 > 知识库问答 >
问题:

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

慕晨
2023-03-14

我正在使用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>

我需要提取“文件列表”和“URL”变量,并将它们注入一个新的URL:

https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

我知道有一些后处理器可以做到这一点,但不知道如何做到。顺便说一句,第二个请求将从Tomcat servlet下载一些文件,有没有一种方法可以让jMeter只下载流而不写入物理文件?这样我就可以对servlet进行负载性能测试。

共有2个答案

詹斌蔚
2023-03-14

要捕获部分响应,请使用正则表达式提取器。

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

周培
2023-03-14

好的,所以你已经知道如何从你的回复中提取网址,我在之前的回答中描述了如何:

https://stackoverflow.com/a/11188349/169277

但在这里,我将对此进行扩展。所以你有你的采样器,你已经得到${url}。现在您需要< code>FILELIST并组装新的url。

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

< code >右键单击请求取样器-

Reference Name : FILELIST
Regular Expression : FILELIST=(\S+)
Template : $1$
Match No. (0 for Random): 1

现在您有了1个请求采样器和2个正则表达式提取器。您需要添加额外的后处理程序才能组装新的url。

< code >右键单击请求取样器-

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

vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}");

现在,您有 ${NEW_URL} 可以在测试中进一步使用。

解决问题的方法总是不止一种,这一行看起来真的很难看,但它达到了目的。

在我的测试中,结果是您请求的(调试采样器):

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;

编辑:

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

http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx

这是一个jmeter .jmx文件,与2.6版本的jmeter一起工作

 类似资料:
  • 我使用Jmeter进行API测试,使用各种http请求和各种采样器来验证它们。现在,我正在为另一个http请求编写测试。在此测试中,步骤如下: < li >发出http请求。处理响应。 < li >使用xpath xtractor,我提取响应并将URL存储在另一个变量(store_url)中。 < li >如果变量有URL,请重复步骤1。这个循环必须重复,直到没有值存储在(store_URL)中。

  • 客户端通过HTTP请求(通过浏览器post)调用Servlet,然后Servlet应向外部网站发送请求(get),并从网站接收响应(post)。servlet继续响应并向客户端发送响应(post)。 我的问题是如何在Servlet中发送和接收请求/响应并将某些内容发送回客户端?

  • 我在spring mvc 3.2.2中使用apache http客户端同步发送5个get请求,如图所示。 如何异步(并行)发送所有这些内容并等待请求返回,以便从所有 GET 请求返回已解析的有效负载字符串?

  • 04-09 12:16:01.679 560 4-5604/?v/retrofit错误:retrofit.converter.conversionexception:com.google.gson.jsonsyntaxexception:java.lang.IllegalStateException:预期的BEGIN_ARRAY但BEGIN_OBJECT位于第1行第2列路径$ 这是JSON响应(在

  • 问题内容: 我需要编写一个命令行客户端,以便在服务器上播放井字游戏。服务器接受http请求并将json发送回我的客户端。我正在寻找一种快速的方法,以使用Boost库发送http请求并以字符串形式接收json。 问题答案: 符合说明的最简单的事情: 这将收到完整的响应。您可以使用虚拟服务器对其进行测试:( 也可以 在Coliru上运行): 这将表明已收到请求,并且响应将由上面的客户代码写出。 请注意

  • 问题内容: 我想使用Google Shortener API 。我想使用Google API Java客户端库发布请求并解析JSON响应。 接下来,我发布我尝试过的代码: 当我执行上面的代码时,我得到下一个输出: 任何想法如何正确设置JsonCParser? 一开始我没有正确设置请求内容。如@dwb所指出的,应设置请求内容: 如果您没有正确设置内容,则会出现下一个错误 com.google.api

  • 问题内容: 我对iOS应用程序开发非常陌生,并且从服务器收到以下响应: 请任何人帮助我了解如何在我的应用程序中使用员工ID和员工姓名。 问题答案: 您的JSON数据看起来像“嵌套JSON”,这意味着您必须将其反序列化两次。 第一个反序列化从您的JSON数据中提取一个字符串: 现在是字符串 再次是JSON数据。第二个反序列化提取数组: 现在您可以像访问它

  • 问题内容: 我正在使用CURL发送请求。响应数据类型为。如何解析此数据并将其插入数据库? JSON输出: 问题答案: 如果您的变量是字符串json之类的,则必须使用function将其解析为 对象 或 数组 : 输出值 现在,您可以将变量作为数组使用: 参考文献: json_decode -PHP手册