如何在restasured中设置会话属性?在我的应用程序代码中,我们有如下内容
String userId = request.getSession().getAttribute(“userid”)
如何在此处将 userId 设置为会话属性(在重新保证的测试用例中)?
如何为所有请求(多个后续请求)维护同一会话?
当我发送多个请求时,它认为每个请求都是新的,会话从服务器端失效,我想在后续调用之间保持会话。
我尝试在cookie中设置jsessionid并在第二个请求中发送它,但是当我在服务器端调试时,它不会加载创建的会话,而是创建不同的会话,因此它不会显示我第一次发送请求时在会话中设置的属性。
当我在直接HttpClient上尝试同样的方法时,它是有效的,而在RestAssure上同样的方法是无效的。
使用HttpClient的代码如下
HttpClient httpClient = util.getHttpClient();
第一个请求
HttpResponse response=httpClient.execute(postRequest);
我从响应中提取了jessionid,并在第二个请求中设置了它
HttpGet getRequest = new HttpGet(Client.endPointUrl);
getRequest.addHeader("content-type", "application/json");
getRequest.addHeader("accept", "application/json");
getRequest.addHeader("Origin", Client.endPointUrl);
getRequest.addHeader("Referer", Client.endPointUrl);
getRequest.addHeader("Auth-Token", authToken);
getRequest.addHeader("Set-Cookie", jsessionId);
//设置我从响应中提取的jessionid后的第二个请求
HttpResponse eventsResponse = httpClient.execute(getRequest);
上述代码工作非常好,我得到了预期的反应。一个观察结果是,我使用同一个httpClient对象来调用这两个请求。
如果我用RestAssured尝试同样的方法,它不起作用。
RestAssured.baseURI = "http://localhost:8080";
Response response=RestAssured.given().header("Content-Type","application/json").
header("Origin","http://localhost:8080").
header("Referer","http://localhost:8080").
body("{"+
"\"LoginFormUserInput\":{"+
"\"username\":\"test\","+
"\"password\":\"password\""+
"}"+
"}")
.when().post("/sample/services/rest/validateLogin").then().extract().response();
JsonPath js=Util.rawToJson(response);
String sessionId=js.get("sessionID");
System.out.println(sessionId);
for (Header header:response.getHeaders()) {
if ("Set-Cookie".equals(header.getName())) {
id= header.getValue().split(";")[0].trim();
String[] arr=jsessionId.split("=");
jsessionId=arr[0];
break;
}
}
response=RestAssured.given().header("Auth-Token",sessionId).header("Content-Type","application/json").
cookie("JSESSIONID",jsessionId).
header("Origin","http://localhost:8080").
header("Referer","http://localhost:8080").
body("{}").
when().
post("/sample/services/rest/getAllBooks").then().contentType("").extract().response();
我尝试使用下面的代码为所有请求重用同一个httpclient,但是不起作用
RestAssured.config = RestAssured.config().httpClient( new HttpClientConfig().reuseHttpClientInstance());
您需要放心地使用会话过滤器
https://github.com/rest-assured/rest-assured/wiki/Usage#session-support
我希望使用超级测试来测试API请求和响应。以下是我迄今为止所尝试的。 route.test.js setupTestUtils。js公司 } 在我的应用程序中。js,我使用passport进行身份验证。身份验证后,我使用会话。REGENATE函数可重新生成会话ID,以避免会话固定。 登录的初始post请求顺利通过。但是,后续的GET请求“loggedIn”失败。此函数在内部使用req。passpo
问题内容: 我正在使用AngularJS框架进行项目。我对使用这个框架很陌生。过去,我只使用纯JavaScript和jQuery。该项目是针对利基市场的一种Web设计器应用程序。 当用户在设计时在页面之间移动时,我希望维护他们所做的所有更改的会话。 现在,如果用户登录,我们将使用数据库中的数据加载会话。当用户单击“保存”按钮时,我们将使用会话数据更新数据库。有人告诉我,我可以在Angular中保持
问题内容: 此方法不正确。我试图找出的是一种不知道将存在哪些cookie,能够处理cookie更改以及维护会话的方法。 我正在为我的简单机器论坛编写一个应用程序,当您单击某些自定义行为时,它会更改其cookie配置。 但是,如果该应用程序对我的网站运行良好,我将发布一个供其他论坛使用的版本。 我知道我朝着正确的方向前进,但是逻辑有点像在踢我的屁股。 任何建议将不胜感激。 问题答案: 这段代码很混乱
我有一个struts2应用程序。在我的应用程序中,我使用 这边走。 提前致谢
我正在寻找一个持久的会话管理器,将会话保存在文件系统(如PHP)上,可以与DropWizard一起使用。我看到有一个<code>环境。getSessionHandler(),但我没有看到关于它的文档。 我可以写我自己的,但我希望有一个煮熟的饭。上面的会话句柄是我要找的吗?如何使用它?
Navicat 为维护 Oracle 用户提供完整的解决方案。 在对象选项卡中选择用户。 右击已选择的用户。 选择“维护”,然后从弹出式菜单中选择一个维护选项。 选项 描述 密码过期 设置用户的密码为过期。 锁定帐号 锁定用户的帐号和禁用访问。 解除锁定帐号 解除锁定用户的帐号和启用访问。