0
我嘗試登錄到網站,並在使用java URLConnection登錄到網站後獲取頁面網站的頁面源。我面對的問題是我無法保持會話,所以服務器給了我這個警告,並且不讓我連接:如何在java URLConnection中維護會話?
該系統需要使用HTTP cookie來驗證授權信息。 我們的系統檢測到您的瀏覽器已禁用HTTP Cookie,或不支持它們。 有關如何正確配置瀏覽器以便與本系統配合使用的更多信息,請參閱瀏覽器中的「幫助」頁面。
起初我試圖發送空的cookie讓服務器理解我正在處理會話,但它不會給我會話ID。
這是我的源代碼:
try {
// Construct data
String data = URLEncoder.encode("usr", "UTF-8") + "=" + URLEncoder.encode("usr", "UTF-8");
data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode("pass", "UTF-8");
// Send data
URL url = new URL("https://loginsite.com");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Cookie", "SESSID=");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
rd.close();
String headerName=null;
for (int i=1; (headerName = conn.getHeaderFieldKey(i))!=null; i++) {
if (headerName.equals("Set-Cookie")) {
String cookie = conn.getHeaderField(i);
System.out.println(cookie.split(";", 2)[0]);
}
}
} catch (Exception e) {
}
經過進一步研究,它會出現android實際上是推薦使用HttpUrlConnection,而不是HttpClient。 http://android-developers.blogspot.com/2011/09/androids-http-clients.html – snapplex