You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rest Assured中获取Session ID?返回null问题求助

解决RestAssured获取Session ID和Cookie为null的问题

你的代码存在几个关键问题,导致登录请求未被服务器正确处理,进而无法获取Session ID和Cookie,以下是具体分析和修正方案:

问题点梳理

  • JSON字段拼写错误:代码中usename应为username,字段名错误会导致服务器无法识别登录参数,登录请求直接失败。
  • JSON字符串格式无效:拼接JSON时转义符和换行符使用错误,{n"应改为\n",且字段名需用\"转义,否则生成的JSON不符合语法规范,服务器无法解析。
  • 请求路径冗余字符:post("/login\r\n")中的\r\n是多余的,会导致请求地址错误,服务器无法匹配登录接口。
  • 请求头拼写错误:Accept-Encoding中的gzp应为gzip,虽不直接导致Cookie为空,但会影响请求兼容性。

修正后的代码

RestAssured.baseURI = "https://demo.com";
Response response = RestAssured.given()
        .header("Content-Type", "application/json")
        .header("connection", "keep-alive")
        .header("Accept-Encoding", "gzip,deflate,br")
        .body("{\n" +
                "  \"username\": \"demo\",\n" +
                "  \"email\": \"demo@abc.com\"\n" +
                "}")
        .post("/login");

// 先验证登录请求是否成功
System.out.println("响应状态码: " + response.getStatusCode());
System.out.println("响应体: " + response.getBody().asString());

// 获取所有返回的Cookie
System.out.println("所有Cookie: " + response.getCookies());

// 获取Session ID(通常对应Cookie名为JSESSIONID,需根据服务器实际返回调整)
String sessionId = response.getCookie("JSESSIONID");
System.out.println("Session ID: " + sessionId);

额外注意事项

  1. 优先通过响应状态码(如200/201表示成功,400/401表示参数或认证错误)和响应体确认登录请求是否被服务器正常处理。
  2. response.getSessionId()仅适配Servlet容器返回的JSESSIONID,若服务器返回的Session Cookie名称不同,需用response.getCookie("目标Cookie名")获取,具体名称可通过浏览器开发者工具查看登录请求的Set-Cookie响应头确认。
  3. 确保服务器在登录成功后确实会返回Session Cookie,若服务器采用Token而非Cookie会话机制,则需要从响应体或响应头中提取Token。

内容的提问来源于stack exchange,提问作者Shubham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:15:49