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

未识别jmeter请求中的jsessionid cookie集

白丁雨
2023-03-14

安装线程组正在验证并按预期生成CSV文件。但是,我无法获得后续线程组中的请求来使用所提供的会话。我可以添加JSESSIONID cookie(使用BeanShell预处理器或HTTP cookie管理器都可以得到相同的结果),但这似乎没有被认识到。正在发送的请求如下:

POST https://test.mydomain.com:8443/prv/p/getUploadedfiles.action

POST data:
start=0&limit=10&sort=createdDate&dir=DESC&days=6

Cookie Data:
$Version=1; JSESSIONID="D0720DD3B06B5752DF6AC83A1B245EDA"; $Path="/"; 
$Domain="test.mydomain.com"

Request Headers:
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Host: test.mydomain.com:8443
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_121)

此请求的返回状态为302以重新指向登录页面。与在安装线程组中成功执行的相同请求相比:

POST https://test.mydomain.com:8443/prv/p/getUploadedfiles.action

POST data:
start=0&limit=10&sort=createdDate&dir=DESC&days=6

Cookie Data:
JSESSIONID=D0720DD3B06B5752DF6AC83A1B245EDA

Request Headers:
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Host: test.mydomain.com:8443
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_121)

请求之间的唯一区别似乎是在cookie数据上显式设置的$version、$path和$domain。[有趣的是,上面链接中的解决方案中的“cookie数据”似乎是正确的,我的意思是在请求输出中不包含$version、$path或$domain]BeanShell预处理器代码是:

import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;

Cookie cookie = new Cookie("JSESSIONID", vars.get("jsessionid"), "test.mydomain.com", "/", true, -1);
CookieManager manager = sampler.getCookieManager();
manager.add(cookie);
log.info("Cookie added: " + vars.get("jsessionid"));

共有1个答案

房光临
2023-03-14

Cookies范围仅限于当前线程组。这同样适用于JMeter变量。如果需要在不同的线程组之间传递对象,则必须通过bsh.shared命名空间或将JMeter变量转换为JMeter属性,这对于整个JVM来说是全局的。参见《针织一颗珍珠二:如何在不同的线程组中使用变量》一文,例如JMeter变量到JMeter属性的转换。

 类似资料:
  • 我在Jmeter中有一个Java请求,我为它编写了扩展AbstractJavaSampleClient的代码,并实现了重写的方法,可以在远程机器的日志中看到响应,但在Jmeter中的view Results树和save response to file中看不到响应。下面是运行测试代码片段,请告诉我如何在Jmeter中捕获Java请求响应

  • 问题内容: 我正在开发一个使用大量ajax的grails应用程序。如果请求是ajax调用,那么它应该给出响应(这部分正在工作),但是如果我在浏览器中输入URL,它应该带我到主页/索引页面而不是请求的页面。下面是Ajax调用的示例gsp代码。 如果我们在浏览器URL栏中键入http:// localhost:8080 / Dash / todo / list ,则控制器应重定向到http:// lo

  • 在我使用JMeter进行的测试中,创建了一些属性,请参阅以下内容: -----------------------------7d159c1302d0y0 内容-处置:窗体-数据;名称="年龄" 内容-类型:文本/普通;charset=ISO-8859-1 内容-传输-编码:8bit 我想删除属性: 内容-类型:文本/普通;charset=ISO-8859-1 内容传输编码:8bit 我尝试运行下

  • 我有一个OAuth 1.0身份验证的Java代码,每次我必须在测试每个请求之前执行它。我目前正在JSR223采样器上工作。 但是如果碰巧看到这个OAuth 1.0插件,有人能解释一下屏幕截图中基于OAuth 1.0的身份验证是如何工作的吗。 在下面给出的每个请求的授权头输出示例中,我要传递一些参数值。 对于第一个URL,我有两个参数 钥匙 密钥 它为第二个URL提供访问令牌和秘密访问令牌,并为第三

  • 我在分析Wireshark时注意到了这一点。在线程组下,这些请求是: 主页/帐户/登录 主页/ 主页/livealarm等。 测试脚本由blazemeter chrome插件记录。 另一个无意的请求HTTP GET/signalr/hubs HTTP/1.1\r\n是由jmeter发送的,但它也是在使用浏览器时发送的。因为它不在示例列表中,所以“Accept”字段在browser和JMeter之间

  • 在运行一个spring-boot服务器时,我在intellij中得到这个错误消息: 当我尝试使用以下命令构建项目文件夹中的项目时,它无法识别maven:mvn spring-boot: run 我通过下载maven解决了这个问题:https://maven.apache.org/install.html并将apache-maven-3.5.3文件夹中的bin文件手动添加到librarys 好像有点

  • 我正在使用最新版本的JMeter,并试图从JMeter发出POST请求,但我无法看到更改HTTP方法的下拉列表。你能告诉我为什么我看不到下拉列表吗? 请在下面找到JMeter的屏幕截图。它没有用于指定HTTP方法的下拉列表。

  • 在中,它显示的“非静态方法'getcontext()'不能从静态上下文引用”如何解决,或者我应该调用什么来代替它。