Jmeter - 如何替换字符串并重新发送?

use*_*940 2 jmeter

我正在尝试创建一个脚本,该脚本将从响应中取出 URL 并再次发送出去。使用正则表达式提取器,我成功地获取了所需的 URL,但当发送请求失败时,它自然会保留“&”。示例: GET http://[ia-test01.inner-active.mobi:8080/simpleM2M/ClientUpdateStatus?cn=WS2006&v=2_1_0-iOS-2_0_3_7&ci=99999&s=3852719769860497476&cip=113-170-93-111&po=642&re=1<= 0&cc=VN&acp=&pcp=]/

我正在尝试用“&”替换“&”。我尝试过: ${__javaScript(${url}.replace("&","&"))} 但它不起作用。我也尝试过正则表达式函数 - 一样。我不确定请求中的 IP 字段是否支持功能的使用。

我目前正在尝试使用 beanshell 后处理器。但我很确定我缺少一个更简单的解决方案。

Dmi*_*i T 5

不确定你想通过替换来得到什么,&&会尝试回应。

  1. 首先:给定多个&实例,您需要使用replaceall函数,而不是替换
  2. 第二:替换/替换所有函数采用正则表达式作为参数,因此您需要转义您的&
  3. 如果您尝试实时替换 URL 路径,则需要Beanshell 预处理器,而不是后处理器

示例 Beanshell 预处理器代码

import java.net.URL;

URL myURL = sampler.getUrl();
String path = myURL.getPath();
String path_replaced = path.replaceAll("\\&", "&");
vars.put("NEW_PATH", path_replaced);
Run Code Online (Sandbox Code Playgroud)

之后放入${NEW_PATH}HTTP 请求的“Path:”部分。

希望这可以帮助。