gpt4 book ai didi

java - 使用 HttpURLConnection 读取 session 变量

转载 作者:行者123 更新时间:2023-11-29 21:13:25 25 4
gpt4 key购买 nike

我正在尝试使用 HttpURLConnection 登录网站。

如果登录成功,服务器会在当前 session 中设置user_id 变量。

使用 SO 和 Google developer docs关于这件事,我已经能够将我的凭据发布到服务器,但是我现在如何从 session 中获取 user_id?

这里是我的代码供引用:

String body = "user=chris&password=geheim";
HttpURLConnection conn = (HttpURLConnection) new URL(LOGIN_URL).openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setInstanceFollowRedirects(false);

conn.connect();
OutputStream out = conn.getOutputStream();
BufferedInputStream in = new BufferedInputStream(conn.getInputStream());

out.write(body.getBytes());
int response = conn.getResponseCode();
String s = "";
for (int c = in.read(); c != -1; c = in.read()) {
s += (char) c;
}
System.out.println(response);
System.out.println(s);
System.out.println(conn.getHeaderFields());

注意:为了便于阅读,我省略了所有异常处理和资源管理。此外,这只是连接到我的本地主机的试用代码,所以不用担心硬编码凭据和其他不安全因素。

更新

好吧,显然我的 body 毕竟没有被提交。当我在服务器代码中执行 console.log(util.inspect(req.body)) 时,它会打印 {}。我仔细检查了请求方法,那是 POST。我究竟做错了什么?

重写了代码,尽管我认为我做了与以前完全相同的事情,但它现在可以正常工作了。很奇怪,但无论如何。

最佳答案

存储user_id 的 session 保存在服务器上。客户端通常获取的只是 session cookie 中的 session ID(例如 JSESSIONID),该 session ID 会传回服务器,以便服务器可以再次找到正确的 session 和数据。

这就是为什么您还可以将大量数据放入用户的 session 中......想象一下所有这些实际上都传递给了客户端!

关于java - 使用 HttpURLConnection 读取 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com