tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    drob drob ist offline Mitglied Bronze drob hat eine blütenweiße Weste
    Registriert seit
    Mar 2007
    Beiträge
    47
    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 dankebar
    Geändert von drob (06.04.08 um 14:29 Uhr)

  2. #2
    drob drob ist offline Mitglied Bronze drob hat eine blütenweiße Weste
    Registriert seit
    Mar 2007
    Beiträge
    47
    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

  3. #3
    drob drob ist offline Mitglied Bronze drob hat eine blütenweiße Weste
    Registriert seit
    Mar 2007
    Beiträge
    47
    aber die Herangehensweise ist doch richtig ?

  4. #4
    drob drob ist offline Mitglied Bronze drob hat eine blütenweiße Weste
    Registriert seit
    Mar 2007
    Beiträge
    47
    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

  5. #5
    HichamId HichamId ist offline Rookie HichamId hat eine blütenweiße Weste
    Registriert seit
    Aug 2008
    Beiträge
    5
    Hallo drop!

    Wie bekommt man die Seite mit user-spezifischen Daten direkt ohne daß man sich manuelle Einloggen?

    Gruß
    HichamID

  6. #6
    drob drob ist offline Mitglied Bronze drob hat eine blütenweiße Weste
    Registriert seit
    Mar 2007
    Beiträge
    47
    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

  7. #7
    HichamId HichamId ist offline Rookie HichamId hat eine blütenweiße Weste
    Registriert seit
    Aug 2008
    Beiträge
    5
    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!

  8. #8
    drob drob ist offline Mitglied Bronze drob hat eine blütenweiße Weste
    Registriert seit
    Mar 2007
    Beiträge
    47
    ein kleiner Auszug aus der Anmeldeseite:
    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>
    1. Das Loginformular wird an "http://www.hotspot-zone.com/hsz/user.php" gesendet!
    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)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 04.04.08, 00:10
  2. Login ohne Cookie
    Von Bradlay im Forum PHP
    Antworten: 5
    Letzter Beitrag: 02.01.06, 10:26
  3. Antworten: 1
    Letzter Beitrag: 29.01.05, 12:11
  4. Login Problem mit method=post
    Von Railer im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 23.06.04, 12:39
  5. Login Problem (cookie)
    Von kcyberbob im Forum PHP
    Antworten: 3
    Letzter Beitrag: 06.11.03, 10:07

Lesezeichen

Lesezeichen