问答 jmeter JSR223 预处理, 调用 sampler.getArguments().getArgument(0).getValue(); 之后. vars.put 会直接无效.有啥别的方法吗? 或者说有什么别的方法能让我获取到请求参数.

飘~ · 2021年10月08日 · 最后由 飘~ 回复于 2021年10月09日 · 3477 次阅读
result = sampler.getArguments().getArgument(0).getValue();
log.info(result);
// 就这一步... 
vars.put("variable_name","123");

sign 中的 ${variable_name} 没有被成功替换...

业务需求是 在一个请求时, 需要 获取到请求体中的数据,然后根据数据 +ak+sk 计算签名之后,将签名写到请求体中...

有没有 老哥 有遇到过相同的情况,或者有相似的业务需求. 多谢..

共收到 8 条回复 时间 点赞

不能直接 vars.put 给请求体中的数据,增加一个用户变量,先 vars.put 给用户变量,然后请求体的数据再从用户变量那里取。遇到过这个问题,不知原因,可能是组件的执行顺序引起的。

飘~ #2 · 2021年10月09日 Author

谢谢, 不可以的..因为我需要计算签名, 计算签名 必须要先获取到请求参数.计算签名之后才能将签名 vars.put 到变量上.
现在看来, 应该是调用 getValue 的时候 jmeter 已经将 ${variable_name}替换过了. ....

飘~ 回复

应该是可以的,你把参数都定义到用户变量那,从那获取,然后 script 里面加密签名啥的,搞好了之后再 put 回用户变量那,然后请求体的数据都是引用用户变量的数据
sampler.getArguments() 这个已经是发送了请求了,只是拦截了下来,不要用这个了,没发请求前处理好

飘~ #4 · 2021年10月09日 Author

啊这..我要的就是少写参数...主要 还是因为我要把脚本搬到 meterSphere ...他们的前置脚本又是用的 jmeter .... 我在看看..实在不行..我换个平台~

飘~ #6 · 2021年10月09日 Author

恩恩 谢谢

你计算签名之前的那个请求参数数据从哪来的呢

飘~ #8 · 2021年10月09日 Author
Tester_谜城 回复

这个在 metersphere 里面是写死了..然后是多个 case ... 谢谢,以及解决了. 直接 setValue 就可以了..

飘~ 关闭了讨论 10月09日 14:43
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册