groovy - 如何防止 jmeter 请求跟随重定向
问题描述
HTTP Request- Redirect Automatically和Follow Redirects下有两个选项。我想在未选中跟随重定向时实现行为
//CASE 1: HttpClient client = HttpClientBuilder.create().build();
//CASE 2: HttpClient client = HttpClientBuilder.create().disableRedirectHandling().build();
HttpGet get = new HttpGet("${request_link}");
HttpResponse response = client.execute(get);
SampleResult.setResponseData(EntityUtils.toByteArray(response.getEntity()));
我正在使用如上例 2 中所示的“disableRedirectHandling”来停止自动重定向。但我得到的是 200 响应代码,而不是预期的 302。
这是我对案例 1 的响应:响应代码:200 响应消息:OK 响应标头:
但我期待以下响应:响应代码:302 响应消息:找到
响应标头:HTTP/1.1 302 发现日期:格林威治标准时间 2021 年 6 月 11 日星期五 00:32:45 内容长度:0 连接:保持活动缓存控制:无缓存,无存储,最大年龄 = 0,必须-revalidate Pragma: no-cache Expires: 0 Location: {redirect location link}
注意: disableRedirectHandling()自动禁用重定向,但我想要实现的是禁用跟随重定向
基本上我想要这个 setRedirectsEnabled(false) 或 setMaxRedirects(0)
我试过这个但没有运气,仍然得到重定向
HttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(RequestConfig.custom().setRedirectsEnabled(true).setMaxRedirects(0).build()).build();
解决方案
您的 CASE 2 看起来有效,可能是您的request_link
变量有问题吗?
JSR223 测试元素具有可以显着提高性能的特性(编译)。要从此功能中受益:
使用脚本文件而不是内联它们。如果此功能在 ScriptEngine 上可用,这将使 JMeter 编译它们并缓存它们。
或使用脚本文本并检查缓存已编译的脚本(如果有可用的属性)。 使用此功能时,请确保您的脚本代码不直接在脚本代码中使用 JMeter 变量或 JMeter 函数调用,因为缓存只会缓存第一个替换。而是使用脚本参数。
因此,请尝试将您HttpGet("${request_link}");
的替换为JMeterVariables类实例的HttpGet(vars.get("request_link"));
wherevars
代表(有关此 JMeter API 快捷方式和其他 JMeter API 快捷方式的更多信息,请参阅您应该与 Groovy 一起使用的前 8 个 JMeter Java 类)
一般来说,不使用 JMeter 的HTTP 请求采样器来构建请求的任何具体原因是什么?它支持cookie、标头、缓存管理器、嵌入式资源、身份验证、与报告的更好集成等。
推荐阅读
- python - 从 dockerfile 中的 uvicorn 命令和从 pythonfile 运行 fastapi 有区别吗?
- php - 通过 elaquent laravel 在分组前应用总和
- kotlin - 访问具有相同变量名的匿名类中的外部作用域局部变量
- javascript - 如何获取所选下拉项的值?
- footer - 镶木地板页脚规范
- python - 与常规相比,点符号上的 Intellij 代码完成速度非常慢
- css - CSS 自定义字体仅在 Chrome 中加载
- javascript - HTTP 400 错误请求,同时使用 URL 向服务器发送更多字符
- elasticsearch - 如何在弹性查询中对多条消息进行分组。是否默认分组?
- r - Highcharter 中的自定义颜色未正确映射到图例