从事自动化任务,我正在尝试测试托管在webseal服务器上的Web服务。问题是我已经尝试了每一种放心的方法来获得响应json,但我得到的是身份验证屏幕html。
这是我的一些非工作代码。我所期待的是json,但无论我运行什么身份验证方法,我都只获得了webseal的身份验证页面。
private String serviceTestGET(WebServiceTest serviceTest) {
System.out.println("Credential : " + userName + " -- " + password);
// RestAssured.
// RestAssured.authentication = basic(userName, password);
// RestAssured.authentication = digest(userId, password);
// RestAssured.authentication = oauth(consumerKey, consumerSecret,
// accessToken, secretToken);//form(userName, password);
// RestAssured.authentication = form(userId, password, config);
RestAssured.useRelaxedHTTPSValidation();
return given().get(serviceTest.getEntryPoint()).asString();
}
答案 0 :(得分:1)
我在google搜索后找到了答案。 我们必须考虑的几件事情,即webseal将通过退回身份验证表单来验证请求。一旦该表单经过身份验证,预计您将使用相同的会话(cookie)访问webseal服务器后面的应用程序。
所以这是我的工作代码
System.out.println("Credentials : " + username + " - " + password);
RestAssured.useRelaxedHTTPSValidation();
SessionFilter sessionFilter = new SessionFilter();
Map<String,String> cookies = given().
filter(sessionFilter).
param("username", username).
param("password", password).
param("login-form-type", "pwd").
expect().
statusCode(200).
when().
post("https://your-web-seal-server/pkmslogin.form").getCookies();
Reporter.log("Server Authenticated");
return given().filter(sessionFilter).cookies(cookies).expect().statusCode(200).
when().get(serviceTest.getEntryPoint()).asString();