微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 jmeter 中的 json 提取器从加密解密的响应中提取值

如何解决如何使用 jmeter 中的 json 提取器从加密解密的响应中提取值

我已经尝试过下面的代码,但它显示是由:

javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getValue() on null object
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.16.jar:2.4.16]
    at javax.script.CompiledScript.eval(UnkNown Source) ~[?:1.8.0_202]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:223) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:44) [ApacheJMeter_components.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:925) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:564) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at java.lang.Thread.run(UnkNown Source) [?:1.8.0_202]
Caused by: java.lang.NullPointerException: Cannot invoke method setValue() on null object
    at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:47) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:34) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.purestudy.encryption.Script77.run(Script77.groovy:32) ~[?:?]
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:321) ~[groovy-all-2.4.16.jar:2.4.16]
java.lang.NullPointerException: Cannot invoke method setValue() on null object

这是我实现的代码,但它只接受在 bodydata 中使用 jsr223 预处理器传递和加密的参数,但不适用于我们无法应用预处理器的情况,这是编写的 jsr223 后处理器

 **String encryptedText= "${ENCRYPTEDResponSEOfprevREQ}";
   log.info(encryptedText);

   String decryptedText = new OpenSSLEncryptDecrypt().decrypt(encryptedText);
   log.info(decryptedText);

   ctx.getCurrentSampler().getArguments().getArgument(0).getValue(decryptedText);

   vars.put("variable",decryptedText);
   def my_var1 = vars.get("variable");
  
   log.info(my_var1);
   ctx.getCurrentSampler().getArguments().getArgument(0).setValue(my_var1);**

解决方法

这一行:

ctx.getCurrentSampler().getArguments().getArgument(0).getValue(decryptedText);

导致错误,因为 ctx.getCurrentSampler().getArguments().getArgument(0) 返回 null 并且您试图在空对象上调用 getValue() 函数。

演示:

enter image description here

在不知道您要实现的目标的情况下很难说如何解决问题,但有两件事很明显:

  1. 您的 HTTP 请求采样器没有参数 - 这就是您收到此错误的原因
  2. 没有这样的函数getValue(String),函数getValue() takes no parameters

有关 JMeter 中 Groovy 脚本的更多信息,请参阅 Apache Groovy - Why and How You Should Use It 文章

,

是的,在 http 请求中没有参数我需要代码来从该采样器中提取值,该值被加密以存储在下一个采样器中 Dmitri T

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。