我已经能够编写一个python脚本来获取Base 64 auth,我的用户名和密码(管理员:密码)等于 - >基本QWRtaW46cGFzc3dvcmQ =
当我将它添加到我的标题管理器时:
授权基本QWRtaW46cGFzc3dvcmQ =
我的所有HTTP请求都成功。
在Jmeter中我用google搜索,我发现在Bean PreProcessor中添加如下:
auto it = lists.at(i).begin() // returns iterator to first element in i-th list in vector
...
*it // you can access value as if "it" was pointer
it++; // iterators can be "moved", that is, they will point to next element than before
的System.out.println(encodedUsernamePassword);
但系统输出给了我 - > [B @ 558e816b这是不正确的
当我将其添加到我的Header管理器中时,就像这样
授权基本$ {base64HeaderValue}
我的HTTP Req显然失败了。用于“管理员:密码的Base64应该是基本的QWRtaW46cGFzc3dvcmQ =而不是[B @ 558e816b
答案 0 :(得分:0)
您正在尝试打印字节数组。您可以将新变量打印为:
System.out.println(vars.get("base64HeaderValue"));
您的标题管理器也应 您的HTTP请求,以便在脚本和请求之前执行
您可以使用自定义函数的JMeter插件而不是scrpting,并在Header管理器中使用__base64Encode函数,类似于:
${__base64Encode(test string, base64HeaderValue)}
答案 1 :(得分:0)
要执行基本身份验证,只需根据此答案将HTTP Authorization Manager添加到您的计划中:
如果您的服务器网址为 http://localhost:8080/test ,则会进行如下配置:
此处无需编写脚本。
答案 2 :(得分:0)
我建议切换到JSR223 PreProcessor和Groovy语言:
Groovy支持所有现代Java语言功能,包括(但不限于)
Groovy相当于你的代码:
vars.put('base64HeaderValue',(vars.get('Username') + ':' + vars.get('Password')).bytes.encodeBase64().toString())