Чтение переменной сеанса с использованием HttpURLConnection

Я пытаюсь войти на сайт, используя HttpURLConnection.

Если вход в систему успешен, сервер устанавливает user_id переменная в текущем сеансе.

Используя SO и документы для разработчиков Google по этому вопросу, я смог отправить свои учетные данные на сервер, но как теперь получить 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());

Примечание: чтобы было легче читать, я исключил всю обработку исключений и управление ресурсами. Кроме того, это всего лишь пробный код, соединяющий мой локальный хост, так что не беспокойтесь о жестко закодированных учетных данных и других проблемах безопасности.

Обновить

Ладно, видимо, мое тело в конце концов не подчиняется. Когда я делаю console.log(util.inspect(req.body)) в моем коде сервера, он печатает {}, Я дважды проверил метод запроса, и это POST. Что я делаю неправильно?

Переписал код, и хотя я думаю, что сделал то же самое, что и раньше, теперь он работает. Странно, но что угодно.

2 ответа

Решение

Сессия, где user_id хранится, хранится на сервере. Обычно клиент получает только идентификатор сеанса в файле cookie сеанса (например, JSESSIONID), который передается обратно на сервер, чтобы сервер мог снова найти правильный сеанс и данные.

Вот почему вы также можете помещать большие объемы данных в сеанс пользователя... представьте, что все это было фактически передано клиенту!

Вы не можете, если на сервере нет активной активной страницы, которая предоставит ее вам.

Другие вопросы по тегам