You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中如何发送经URL编码的加密请求数据?

解决JMeter加密数据未URL编码的问题

问题根源

你当前的JSR223代码只完成了AES加密,没对加密结果做URL编码,而且代码里的字符串写法有语法错误,这才导致请求体里的加密数据没被正确编码。

具体解决步骤

1. 修改JSR223 Sampler代码

在加密后直接对结果做URL编码,同时修正字符串的语法问题:

// 修正原始字符串写法,避免语法报错
def plainText = '{"MY_SENTENCE"}'
// 执行AES加密
def encrypted = Crypto.encrypt("AES/CBC/PKCS5Padding", plainText, Crypto.generateSecretKey(), Crypto.generateIv())
// 用Java的URLEncoder对加密结果做URL编码,指定UTF-8格式
def urlEncodedData = java.net.URLEncoder.encode(encrypted, "UTF-8")
// 将编码后的结果存入变量
vars.put("enc_data", urlEncodedData);

2. 保持HTTP请求的Body Data不变

还是在HTTP请求的Body Data里写:

{ "data": "${enc_data}" }

补充说明

  • 加密后的内容如果包含+、&这类URL特殊字符,不编码的话会被服务器解析错误,URL编码会把它们转成%2B、%26这类安全格式。
  • Body Data模式下JMeter不会自动对变量内容做URL编码,必须手动在代码里完成这一步,仅设置内容编码无效。

内容的提问来源于stack exchange,提问作者sinc_lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:15:13