我正在JMeter中进行性能测试,我必须使用Header Manager传递授权详细信息。
这是我的代码:
String headerName = "Authorization";
String headerValue = "Basic MyKey MyValue";
Header bcHeader = new Header(headerName,headerValue);
HeaderManager hm = new HeaderManager();
hm.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
hm.add(bcHeader);
hm.add(new Header("Content-Type", "application/json"));
hm.add(new Header("Access-Control-Allow-Origin", "*"));
我正面对UnAuthorized error
。
请告诉我是否还有另一种编写代码的方法。
谢谢。
答案 0 :(得分:0)
通常,您应该使用HTTP Authorization Manager来绕过Basic HTTP Auth挑战。
但是,如果您要手动构造Authorization标头,则应注意其格式如下
Authorization
Basic
在Basic
之后,您需要提供用冒号分隔并编码为Base64的用户名和密码。因此,如果您的用户名是MyKey
,密码是MyValue
,则应该对字符串MyKey:MyValue
进行编码,并将结果添加到标头中,使其看起来像:
Basic TXlLZXk6TXlWYWx1ZQ==
关于Java代码,它类似于:
String headerName = "Authorization";
String username = "MyKey";
String password = "MyValue";
Header bcHeader = new Header(headerName,
"Basic " +
Base64.encodeBase64String((username + ":" + password).getBytes(StandardCharsets.UTF_8)));
HeaderManager hm = new HeaderManager();
hm.add(bcHeader);
hm.add(new Header("Content-Type", "application/json"));
hm.add(new Header("Access-Control-Allow-Origin", "*"));
hm.setName(JMeterUtils.getResString("header_manager_title"));
hm.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
hm.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName());
答案 1 :(得分:0)
Auth
。${Auth}
。我在请求1的响应中获得授权值,如下所示
因此要提取此内容,请将regular expression extractor添加到同一请求(请求1),如下所示。
现在我们可以在标头管理器中使用$ {Auth},向请求2添加header manager并给出标头名称和值,如下所示
有关提取变量的更多信息,请遵循this link
让我知道是否有帮助