ERLEDIGT
JA
JA
ANTWORTEN
18
18
ZUGRIFFE
4212
4212
EMPFEHLEN
-
hallo,
ich versuche mich auf einer Website einzuloggen,
und dann für den Nutzer informationen herunterladen.
Die SessionID's werden in Cookies hinterlegt(beim Laden
bzw Einloggen auf der Seite)
Mein Login über HttpClient funktioniert jedoch nicht!
Mein vorgehen,
einen HttpClient anlegen,
eine PostMethod (fürs Login erstellen)
ein GetMethod erstellen, für den download.
Ich habe die Cookies im HttpClient,
mit denen beim manuellen Einloggen verglichen
(habe dazu Firefox verwendet).
Es sind alle Cookies vorhanden,
jedoch bekomme ich nicht die Daten "für den eingeloggten Nutzer"
hat jemand eine idee was ich falsch gemacht haben kann ?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
HttpClient client = new HttpClient(); client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); String temp; // Einfacher Aufbau einer Verbindung zur Website GetMethod getMethod1 = new GetMethod(siteURL); getMethod1.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); client.executeMethod(getMethod1); temp = getMethod1.getResponseBodyAsString(); save(temp); insertCookiesToClient(client, temp); for (Cookie c : client.getState().getCookies()) { System.out.println("Cookie : " + c.getName() + " \t" + c.getValue() + " \t" + c.getDomain()); } Thread.sleep(500); System.out.println("------------------------------"); // Login auf der Website /*<form action="/login/login" method="post"> email: <input id="user_email" name="user[email]" size="30" type="text" /><br/> password: <input id="user_password" name="user[password]" size="30" type="password" /><br/> <input name="commit" type="submit" value="Login" /> </form> */ PostMethod postMethod1 = new PostMethod("loginURL"); postMethod1.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); postMethod1.addParameter("user[email]", "a@bc.de"); postMethod1.addParameter("user[password]", "pw"); postMethod1.addParameter("commit", "Login"); client.executeMethod(postMethod1); temp = postMethod1.getResponseBodyAsString(); save(temp); insertCookiesToClient(client, temp); for (Cookie c : client.getState().getCookies()) { System.out.println("Cookie : " + c.getName() + " \t" + c.getValue() + " \t" + c.getDomain()); } // Download der Informationen Thread.sleep(500); System.out.println("------------------------------"); GetMethod getMethod2 = new GetMethod(downloadURL); getMethod2.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); client.executeMethod(getMethod2); temp = getMethod2.getResponseBodyAsString(); save(temp); insertCookiesToClient(client, temp); for (Cookie c : client.getState().getCookies()) { System.out.println("Cookie : " + c.getName() + " \t" + c.getValue() + " \t" + c.getDomain()); } // LOGOUT Thread.sleep(500); System.out.println("------------------------------"); GetMethod getMethod5 = new GetMethod(logoutURL); getMethod5.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); client.executeMethod(getMethod5); temp = getMethod5.getResponseBodyAsString(); save(getMethod2.getResponseBodyAsString()); for (Cookie c : client.getState().getCookies()) { System.out.println("Cookie : " + c.getName() + " \t" + c.getValue() + " \t" + c.getDomain()); }
nach dem ausführen bekomme ich das ..
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Cookie : _session_id 85b9eda3d3f7cff5ae38b03b2b61c59a info.side.com ------------------------------ // Login Cookie : SITEm a%40bc.de .side.com Cookie : SITEp d69b1760d4248fe1e5dc4ec7c6abf30f .side.com Cookie : _session_id 85b9eda3d3f7cff5ae38b03b2b61c59a info.side.com ------------------------------ // Download Cookie : SITEm a%40bc.de .side.com Cookie : SITep d69b1760d4248fe1e5dc4ec7c6abf30f .side.com Cookie : _session_id 082bcbfd456b4b390a2671c8bc1d808e info.side.com ------------------------------ //Logout Cookie : SITEm a%40bc.de .side.com Cookie : SITEp d69b1760d4248fe1e5dc4ec7c6abf30f .side.com Cookie : _session_id 082bcbfd456b4b390a2671c8bc1d808e info.side.com
ich verzweifle, und bin über jede idee dankebarGeändert von drob (06.04.08 um 14:29 Uhr)
-
muss ich eine Methode explizit sagen, dass die Cookies
im HttpClient verwendet werden sollen?
eine Erkenntnis:
ein wichtiges Cookie wird nicht "anerkannt"
nach dem Login wird das Cookie "_session_id" nicht beibehalten
bzw. nicht anerkannt, warum auch immer
Code :1 2 3 4 5 6 7 8 9 10 11
//Simple Site conect Cookie : _session_id 85b9eda3d3f7cff5ae38b03b2b61c59a info.side.com ------------------------------ // Login Cookie : _session_id 85b9eda3d3f7cff5ae38b03b2b61c59a info.side.com ------------------------------ // Download Cookie : _session_id 082bcbfd456b4b390a2671c8bc1d808e info.side.com ------------------------------ //Logout Cookie : _session_id 082bcbfd456b4b390a2671c8bc1d808e info.side.com
-
aber die Herangehensweise ist doch richtig ?
-
Ich habe ein Lösung gefunden, wenn auch nur aufgrund eines dummen/einfachen Zufalls
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
HttpClient client = new HttpClient(); // Einfacher Aufbau einer Verbindung zur Website GetMethod getMethod1 = new GetMethod(siteGetURL); client.executeMethod(getMethod1); save( getMethod1.getResponseBodyAsString()); System.out.println("------------------------------"); // Login auf der Website PostMethod postMethod1 = new PostMethod("loginURL"); postMethod1.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); postMethod1.addParameter("user[email]", "a@bc.de"); postMethod1.addParameter("user[password]", "pw"); postMethod1.addParameter("commit", "Login"); client.executeMethod(postMethod1); save(postMethod1.getResponseBodyAsString()); // Download der Informationen GetMethod getMethod1 = new GetMethod(siteUserURL); client.executeMethod(getMethod1); save( getMethod1.getResponseBodyAsString()); System.out.println("------------------------------");
kurz, ich setzte meine getMethod einfach neu, und dann bekomme ich die user-spezifischen Daten
Wenn es jemand mal brauchen sollte / bzw den gleichen Fehler machte wie ich
-
Hallo drop!
Wie bekommt man die Seite mit user-spezifischen Daten direkt ohne daß man sich manuelle Einloggen?
Gruß
HichamID
-
An der Anmeldung kommst du nicht vorbei(Wie auch sonst soll der Server wissen wer du bist?),
Einmal eingeloggt, kannst aber mehrere Interaktionen als der angemelderte User tätigen
-
Danke erstmal für den Antwort!
Ich habe es wie folgt mit HttpClient probiert:
HttpClient client =new HttpClient();
GetMethod getMethod = new GetMethod("http://www.hotspot-zone.com/hsz/");
client.executeMethod(getMethod);
//Login
PostMethod postMethod = new PostMethod("http://www.hotspot-zone.com/hsz/?status=login");
postMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY)
postMethod.addParameter("user","usernamexxx");
postMethod.addParameter("pass","passwordxxx");
client.executeMethod(postMethod);
// url von PostMethod holen:
String url = postMethod.getURI().getEscapeURI();
// die Seite Laden auf den Android-Browser
WebView web = new WebView();
web.loadUrl(url);
this.setContentView(web);
Die Seite wird schon aufgerufen, aber nicht mit user-spezifischen Daten.
weißt vielleicht, woran es liegt?
Danke für jede Hilfe im Voraus!
-
ein kleiner Auszug aus der Anmeldeseite:
1. Das Loginformular wird an "http://www.hotspot-zone.com/hsz/user.php" gesendet!HTML-Code:<form style="margin-top: 0px;" action="http://www.hotspot-zone.com/hsz/user.php" method="post"> <input type="hidden" name="PHPSESSID" value="qo07o75p92ntsekcsr6uhbn1a6" />Benutzername: <br /> <input type="text" name="uname" size="12" value="" /><br />Passwort: <br /> <input type="password" name="pass" size="12" /><br /><input type="hidden" name="xoops_redirect" value="/hsz/" /> <input type="hidden" name="op" value="login" /> <input type="submit" value="Login" /><br /> </form>
2. Es sollen möglichst alle Werte beim Login gesendet werden.
3. Hier ein Auszug aus meinem Funktionierenden code:
Code :1 2 3 4 5 6
client = new HttpClient(); client.getParams().setCookiePolicy(CookiePolicy.RFC_2109); PostMethod postMethod = new PostMethod("http:\\website.de"); postMethod.addParameter("user[email]", "username"); postMethod.addParameter("user[password]", "password"); postMethod.addParameter("commit", "Login");
evtl liegt es an der php-session?! (wer weiss)Geändert von drob (02.09.08 um 14:55 Uhr)
-
Hallo, ich wollte dein Code ma ausprobieren, habe auch die http Client Biblothek eingebunden aber anscheinend sind GetMethod & PostMethod nicht dabei, da gibt er mir nämlich eine Fehlermeldung aus (”Cannot find symbol”).
Wo kann ich diese Biblotheken finden? Durch Googlen hab ich nichts gefunden...
-
Hi und Willkommen bei tutorials.de

Kannst du mal deinen aktuellen Code zeigen?
Bitte gleich in die passenden Coetags einfügen [java]...[/java].Geändert von sheel (19.09.11 um 20:35 Uhr) Grund: Tagfehler
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Bei CookiePolicy meckert er auch rum...Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
import org.apache.http.client.*; public class Main { try { HttpClient client = new HttpClient(); GetMethod getMethod1 = new GetMethod("http://example.org/geheim.php"); client.executeMethod(getMethod1); System.out.println("Aufruf ohne Login —————–"); System.out.println(getMethod1.getResponseBodyAsString()); System.out.println("———————————–"); PostMethod postMethod1 = new PostMethod("http://example.org/login.php"); postMethod1.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); postMethod1.addParameter("name", "stefan"); postMethod1.addParameter("pass", "geheim"); client.executeMethod(postMethod1); System.out.println("Login —————————–"); System.out.println(postMethod1.getResponseBodyAsString()); System.out.println("———————————–"); client.executeMethod(getMethod1); System.out.println("Aufruf nach Login —————–"); System.out.println(getMethod1.getResponseBodyAsString()); System.out.println("———————————–"); } catch (Exception e) { e.printStackTrace(); } } }Geändert von Ralf121 (19.09.11 um 18:34 Uhr)
-
Was genau hast du da heruntergeladen?
Hast du einen Link?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
http://hc.apache.org/downloads.cgi
HttpClient 4.1.2 (GA)
Die source....
-
19.09.11 21:04 #14SE Tutorials.de Gastzugang
Wenn du dir die Source geladen hast musst du die Lib erstmal builden und zum CP hinzufügen bevor du sie nutzen kannst.
-
Ach so...dann kann ich mir doch gleich die jar dateien laden oder nicht?
Ähnliche Themen
-
Login via apache httpclient
Von Orex im Forum JavaAntworten: 1Letzter Beitrag: 09.09.10, 08:06 -
Apache HttpClient - Cookie-Problem
Von Julian-w im Forum JavaAntworten: 1Letzter Beitrag: 14.03.09, 14:00 -
httpclient Jakarta Cookie zurücksenden
Von Tangarama im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 10.11.08, 10:55 -
HttpClient und Cookie ... Verständnisproblem
Von drob im Forum JavaAntworten: 1Letzter Beitrag: 04.04.08, 00:10 -
Login Problem mit method=post
Von Railer im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 23.06.04, 12:39





Zitieren

Login




