如何用 BeanShell 解码 URL?

How to decode URL with BeanShell?

我需要在请求中传递一个参数(URL 的一部分),例如:

"S;4;163;1;O;rAghjgjU="

但是这个值被提取为像这样的正则表达式:

"S%3B4%3B163%3B1%3BO%3BrAghjgjU%3D"

我想用 BeanShell 解码URL。

  1. JMeter 提供了 __urldecode() 函数,所以如果你像这样使用它:

    ${__urldecode(S%3B4%3B163%3B1%3BO%3BrAghjgjU%3D)}
    

    您将获得所需的值。

  2. 如果您仍然想使用 Beanshell,您可以调用 URLDecoder.decode(); 方法,例如:

    String decoded = URLDecoder.decode("S%3B4%3B163%3B1%3BO%3BrAghjgjU%3D", "UTF-8");
    
  3. 还有一个__Beanshell()函数允许执行任意的Beanshell脚本,像这样调用它:

    ${__BeanShell(URLDecoder.decode("S%3B4%3B163%3B1%3BO%3BrAghjgjU%3D"\, "UTF-8"),)}
    

    有关 JMeter 中 Beanshell 脚本的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component,特别注意如何从 Beanshell 脚本中调用 Java 和 JMeter API 类。