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

时间:2014-01-15 12:10:51

标签: 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&安培;重= 1&安培; LT = 0&安培; CC = VN&安培; ACP =安培; PCP =] /

我正在尝试更换“&”用“&”。 我试过了:$ {__ javaScript($ {url} .replace(“&”,“&”))} 但它没有用。我也试过了正则表达式函数。 我不确定请求中的IP字段是否支持函数的使用。

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

3 个答案:

答案 0 :(得分:2)

通过将&替换为&,不确定您尝试获取的内容,但会尝试回复。

  1. 首先:给定多个&个实例,您需要使用replaceall函数,而不是替换
  2. 第二:替换/ replaceall函数将 RegEx 作为参数,因此您需要转义&
  3. 如果您尝试实时替换网址路径,则需要Beanshell Pre Processor,而不是后处理器
  4. 样本Beanshell预处理器代码

    import java.net.URL;
    
    URL myURL = sampler.getUrl();
    String path = myURL.getPath();
    String path_replaced = path.replaceAll("\\&", "&");
    vars.put("NEW_PATH", path_replaced);
    

    之后将${NEW_PATH}放到"路径:"您的HTTP请求的一部分。

    希望这会有所帮助。

答案 1 :(得分:0)

非常感谢。但是,我从最近的经验中看到,要替换一个实际上是RegExp特殊字符的字符,例如\" ()等,你需要放3个反斜杠而不是1,而不是2.这很奇怪。

所以你写了

var res = str.replaceAll("\\\\u003c", "<");              

替换\u003c with <

答案 2 :(得分:0)

代码更少的解决方案:

  • 安装Custom JMeter Functions plugin

  • 使用以下语法

     ${__strReplace(ImAGoodBoy,Good,Bad,replaceVar)}
    
  • “ ImAGoodBoy”是将在其中进行替换的字符串

  • “好”是要替换的子字符串

  • “错误”是替换字符串

  • “ replaceVar”是用于保存结果字符串的变量

Refer this URL for more info!