1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

HTTP Login Post und Get

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von FinelyDoyle, 22.10.2011.

  1. FinelyDoyle, 22.10.2011 #1
    FinelyDoyle

    FinelyDoyle Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    03.10.2011
    Hallo zusammen,

    ich möchte mich mit meiner App auf einer Seite einloggen die folgenden Loginform aufweist:
    Code:
    <form action="/example/index.php" method="POST"> 
       <input type="text" class="iuser" name="user">&nbsp;
       <input type="password" class="ipass" name="pass">&nbsp;
       <input type="hidden" name="a" value="login">
       <input type="hidden" name="l" value="1">
    </form>
    
    mit dem code erhalte ich auch den conten der Seite nach erfoglreichen login:

    Code:
            String user = "username";
            String pwd = "password";
            String a = "login";
            String l = "1";
            String source = "";
            
            String data = "user" + "=" + user+ "&" + "pass" + "=" + pwd + "&" + "a" + "=" + a + "&" + "l" + "=" + l;
            try{
            // Send data
            URL url = new URL(adr); 
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            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) {
                source = source + "\n"+ line;
            }
            wr.close();
            rd.close();
            }catch (Exception e) {
            }
    
    mir stellt sich jetzt die Frage: Wie kann ich als eingeloggter User auf der Seite weiter navigieren?

    Wenn ich einfach eine neue Connection aufmache bin ich nicht mehr eingeloggt.

    Ich würde gerne auf die erhaltene URL (eingeloggt) wieder eine Get anfrage senden.
     
  2. korndi, 22.10.2011 #2
    korndi

    korndi Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
    Erstelle eine Session in PHP : Quakenet/#php Tutorial - de - Sessions
    Gib beim Login die Session id zurück und speicher sie in android. Beim Aufruf der neuen seite (php) gib die session id wieder mit und überprüf ob die sessionid korrekt ist
     
    FinelyDoyle bedankt sich.
  3. FinelyDoyle, 22.10.2011 #3
    FinelyDoyle

    FinelyDoyle Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    03.10.2011
    super danke werd ich dann ausprobieren
     
  4. FinelyDoyle, 24.10.2011 #4
    FinelyDoyle

    FinelyDoyle Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    03.10.2011
    Ich hab es jetzt ausprobiert indem ich die PHP Session ID aus dem HTTP Header gelesen habe und diese dann bei der nächsten GET Abfrage mit ?PHPSESSID=xxx mitgeben habe. Doch leider wird die Session nicht fortgesetzt. Ich nehme an, dass weil der Server nicht auf die Session ID als GET wartet wird die einfach ignoriert.

    vom Server erwartete GET Abfrage: http://example.com/index.php?l=1&p=index&r=12

    von mir gesendete GET Abfrage: http:// example.com/ index.php?PHPSESSID=xxx&l=1&p=index&r=12

    Gibt es eine Möglichkeit die erwartete GET Abfrage zu senden und trotzdem die session id mit zu senden?

    Mein Code:
    Code:
            String user = "username";
            String pwd = "password";
            String a = "login";
            String l = "1";
            String sessionurl = "http://example.com/index.php?PHPSESSID=";
            String get = "&l=1&p=index&r=12";
            String source = "";
     
            String data = "user" + "=" + user+ "&" + "pass" + "=" + pwd + "&" + "a" + "=" + a + "&" + "l" + "=" + l;
            try{
            // Send data
            URL url = new URL(adr); 
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            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) {
                source = source + "\n"+ line;
            }
            wr.close();
            rd.close();
     // Get SessionID
     Map<String, List<String>> headers = conn.getHeaderFields();
         String sessionId = headers.get("Set-Cookie").toString();
         sessionId = sessionId.substring(sessionId.indexOf("=")+1, sessionId.indexOf(";"));
         System.out.println(sessionId);
     // resume session
     url = new URL(sessionurl + sessionID + get);
     conn = url.openConnection();
            rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            while ((line = rd.readLine()) != null) {
                source = source + "\n"+ line;
            }
            wr.close();
            rd.close();
            }catch (Exception e) {
            }
    
     

Diese Seite empfehlen