簡體   English   中英

使用HttpURLConnection讀取會話變量

[英]Read session variable using 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。 我究竟做錯了什么?

重新編寫了代碼,即使我認為我所做的工作與之前一樣完全相同,現在也可以正常工作。 很奇怪,但是隨便吧。

存儲user_id的會話保留在服務器上。 客戶端通常獲得的只是會話cookie中的會話ID(例如JSESSIONID),該ID會傳遞回服務器,以便服務器可以再次找到正確的會話和數據。

這就是為什么您還可以將大量數據放入用戶會話中的原因……想象所有這些數據實際上已傳遞給客戶端!

您不能,除非服務器中有一個合作的活動頁面可以將其提供給您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM