gpt4 book ai didi

java - 我应该如何将我的 Java 代码隐藏到 Jmeter BeanShell Sampler 中

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:52 24 4
gpt4 key购买 nike

我有一小段 Java 代码,我必须将其合并到 Jmeter 中才能调用包含 OAuth 身份验证的特定 Jar 文件。

Java Code:-
package Name1;
import Service;
public class OAuth {
public static void main(String[] args) {
String requestPayload ="";
OAuth service = new OAuth("${Key1}", "${Key2}")
.setRequestTokenURL("${URL1}")
.setAccessTokenURL("${URL2}")
.setAccessResourceURL("${URL3}")
.setRequestorId("${Email}")
.setScope("${Status}");
String[] authenticatedAccessToken = service.getAuthenticatedAccessToken();
String resourceResponse = service.accessResource(requestPayload, authenticatedAccessToken);
System.out.println(resourceResponse);
}

Bean Shell Sampler代码如下

我们尝试了这段代码,但它不起作用。

import Service;
key = vars.getObject("${AppKey}");
secret = vars.getObject("${SecretKey}");
Email = vars.getObject("${Email}");
Scope = vars.getObject("${Scope}");
requestPayload =vars.getObject("");

OAuth service = new OAuth(key, secret);
service.setRequestTokenURL("${URL1}");
service.setAccessTokenURL("${URL2}");
service.setAccessResourceURL("${URL3}}");
service.setRequestorId(${Email});
service.setScope(${Scope});
authenticatedAccessToken = service.getAuthenticatedAccessToken();
resourceResponse = service.accessResource(requestPayload, authenticatedAccessToken);
SampleResult.setResponseData(resourceResponse);

有人可以帮助我们纠正这段代码中的错误吗?谢谢

最佳答案

首先确保提供服务命名空间的 .jar 文件存在于 JMeter 类路径(通常是 JMeter 安装的/lib 文件夹)中,并且重新启动 JMeter 来获取它们。

尝试以下操作:

import Service;
key = vars.getObject("AppKey");
secret = vars.getObject("SecretKey");
Email = vars.getObject("Email");
Scope = vars.getObject("Scope");
requestPayload =vars.getObject("");

OAuth service = new OAuth(key, secret);
service.setRequestTokenURL(vars.get("URL1"));
service.setAccessTokenURL(vars.get("URL2"));
service.setAccessResourceURL(vars.get("URL3");
service.setRequestorId(Email);
service.setScope(Scope);
authenticatedAccessToken = service.getAuthenticatedAccessToken();
resourceResponse = service.accessResource(requestPayload, authenticatedAccessToken);
SampleResult.setResponseData(resourceResponse);
  • 当您使用vars.get()vars.getObject()时,您不需要用${}包围变量名称
  • 当您引用先前定义的变量(例如 Email)时,您也不需要这些数字括号

调试 Beanshell 脚本的一些技巧:

  • 如果您在脚本的开头添加 debug(); 指令 - 您将在 stdout 中看到详细的调试信息
  • 如果将代码包装到“try” block 中并设置“catch” block ,如下所示:

    catch (Throwable ex) {
    log.error("Somewhing wrong: " , ex);
    }

    您将在jmeter.log文件中看到堆栈跟踪

您还可以考虑切换到 JSR223 Samplergroovy语言为

  • 它 100% Java 兼容(包括泛型、字符串切换、try-with-resources 等)
  • 它实现了Compilable接口(interface)带来更好的性能

参见Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!文章以获取更详细的解释、安装 groovy 脚本引擎的说明和脚本最佳实践。

关于java - 我应该如何将我的 Java 代码隐藏到 Jmeter BeanShell Sampler 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com