如何在JMeter响应体中过滤反斜杠,还原正常重定向URL?
在JMeter中还原转义的redirect_uri
方法一:JSON提取器结合字符串替换函数
在目标请求下添加JSON Extractor:
- 引用名称:填写自定义变量名,比如
rawRedirectUri - JSON Path表达式:
$.redirect_uri - 匹配数字:
1
这一步会把带转义的URI提取到${rawRedirectUri}变量中,值为http:\/response.com/path。
- 引用名称:填写自定义变量名,比如
在需要使用处理后URI的地方,使用
__strReplace函数替换转义符:${__strReplace(${rawRedirectUri},\/,/,)}该函数会将字符串中的
\/替换为/,最终得到http://response.com/path。
方法二:正则表达式提取器直接提取
在目标请求下添加正则表达式提取器:
- 引用名称:
cleanRedirectUri - 正则表达式:
"redirect_uri": "http:(\\/)([^"]+)" - 模板:
http://$2$ - 匹配数字:
1
通过正则直接匹配并重组URI,提取后${cleanRedirectUri}变量的值就是处理好的http://response.com/path。
方法三:BeanShell后置处理器处理
在目标请求下添加BeanShell PostProcessor,写入以下代码:
import org.json.JSONObject; // 获取响应内容 String responseBody = prev.getResponseDataAsString(); // 解析JSON JSONObject jsonObj = new JSONObject(responseBody); // 获取带转义的URI String rawUri = jsonObj.getString("redirect_uri"); // 替换转义符 String processedUri = rawUri.replace("\\/", "/"); // 将处理后的值存入变量 vars.put("cleanRedirectUri", processedUri);
执行后,${cleanRedirectUri}变量就会存储还原后的URI。
内容的提问来源于stack exchange,提问作者TriNguyen
相关产品推荐
相关产品推荐

