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

Verwaltung von ServerVerbindung mit Cookies

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Chri, 07.09.2009.

  1. Chri, 07.09.2009 #1
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Hi Leute! Da bin ich wieder mit meinen Problemen!

    Und zwar möchte ich eine Verbindung zum Server aufbauen und dann auch die Cookies die er mir schickt speichern, damit ich sie beim nächsten mal wieder mitschicken kann!
    Verbindung zum Server mache ich zur Zeit mit:

    URL meineURL = new URL(http://www.beispielurl.com);
    URLConnection connection = meineURL.openConnection();
    meineVerbindung = (HttpURLConnection)connection;

    httpCode = meineVerbindung.getResponseCode();
    if(httpCode == HttpURLConnection.HTTP_OK)
    {

    isServerResponse = meineVerbindung.getInputStream();
    byte[] haeppchen = new byte[4096];
    int dieAnzahl;
    while((dieAnzahl= isServerResponse.read(haeppchen))>0)
    sbuf.append(new String(haeppchen,0,dieAnzahl));
    tvSettingInfo.setText(sbuf.toString());

    usw.

    Mit so einer Verbinung kann ich aber keine dauernde Verbindung aufbauen, sondern nur immer eine Anfrage stellen und auf eine Antwort warten und dann ist die Verbindung natürlich auch schon wieder weg!

    bitte um Hilfe!

    mfg Chri
     
  2. Chri, 07.09.2009 #2
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Ich hätte da was im Internet gefunden und schon ein bisschen modifiziert!
    Ich weiß leider nicht, was ich noch umändern muss, dass es funktioniert!

    dhc.addResponseInterceptor(new ResponseProcessCookies());
    dhc.addRequestInterceptor(new RequestAddCookies());
    HttpPost post1 = new HttpPost("http://beispielurl.com");
    post1.addHeader("username", username);
    post1.addHeader("key", key);
    try {
    HttpResponse rsp1 = dhc.execute(post1);
    rsp1.getAllHeaders();
    } catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    Bitte wiedermal dringend um Hilfe!:)
     
  3. Shinigami, 07.09.2009 #3
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Hallo, da bin ich wieder mit meinem gefährlichen Halbwissen ;-)

    Schau mal was in dem Http-Header steht nach der Anmeldung. Aus der Connection solltest Du mit getHeaderFields oder ähnlich die Attribute des Headers auslesen können.Da ist meines Wissens ein Attribut mit Namen set-cookies oder so dabei. Ist nichts weiter als eine Zeichenkette, welche Du auslesen und wieder an den nächsten Request anhängen musst. Mit setRequestProperty der connection sollte das gehen. Das Attribut heißt cookie imho. Der Header enthält noch mehr identifizierende Merkmale die vllt eine Rolle spielen damit der Server die Session für Dich aufrecht erhält. Darum geht's doch oder?

    Grüße
     
    Chri bedankt sich.
  4. Chri, 08.09.2009 #4
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    ja genau! Zum einen gehts darum, wie ich im informationen via post Parameter schicken kann (siehe bsp.) und zum anderen, wie ich dann die Verbindung aufrechterhalte!

    stimmt! es gibt connection.getHeaderFields
    aber der Braucht eine key oder ähnliches!
    Wenn ich mir das ganze mit debugg ansehe, steht in einem Array aus Objekten unter anderem "set-cookie" aber da steht nichts dahinter oder so!
    Und wie bekomme ich postParameter rein, ohne den obrigen Code zu verwenden?


    mfg Chri
     
    Zuletzt bearbeitet: 08.09.2009
  5. MichaelS, 08.09.2009 #5
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
  6. Chri, 08.09.2009 #6
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Zusätzliche Frage:Irgendwelche schnellen Ideen, wie ich ein Passwort als postparameter anhängen kann?:rolleyes:

    mfg Chri
     
  7. MichaelS, 08.09.2009 #7
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    ist erklärt in meinem Thread... parameter data... funktioniert auch super
     
  8. Chri, 08.09.2009 #8
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    ich gaub ich bin blind!
    In welcher zeile steht das?:rolleyes:
     
  9. Chri, 08.09.2009 #9
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Mann! Ich hab glaub ich einen Ablauffehler! Jedenfals funktioniert es so nicht:

    URLConnection connection = meineURL.openConnection();
    meineVerbindung = (HttpURLConnection)connection;
    connection.setRequestProperty("set-cookie", m_sHopSession);
    httpCode = meineVerbindung.getResponseCode();

    Ich steh irgendwie auf der Leitung!:confused:
     
  10. Shinigami, 08.09.2009 #10
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Das dürfte mich funktionieren. "set-cookie" wird lediglich zum Setzen des Cookies vom Server an den Browser geschickt. Der Browser schickt das Attribut "Cookie" zurück!

    Hier mal der Wikipedia-Artikel zu HTTP-Cookies - ist aber wirklich nur Überblickswissen.

    Gruß,
    Shini
     
  11. Chri, 08.09.2009 #11
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    shini! Du bist ein genie!!!:)
    mfg Chri
     
  12. Chri, 08.09.2009 #12
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Dann bliebe nur noch das Problem mit dem Postparametern!:confused:
     
  13. Shinigami, 08.09.2009 #13
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Man man:

    Google ist Dein bester Freund: *guckstdu*

    Allerdings fehlt mir bei dem Beispiel irgendwie der Aufruf:

    conn.setRequestMethod("POST"); so wie ihn auch MichaelS hier verwendet.

    Gruß,
    Shini
     
  14. Chri, 08.09.2009 #14
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Hab ich gemacht! bekomm aber keine Serverantwort!
    meineVerbindung = (HttpURLConnection)connection;
    meineVerbindung.setDoOutput(true);
    meineVerbindung.setRequestMethod("POST");
    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
    out.write("/user.login?username=" + m_sUsername + "&password=" + m_sMD5Password +"&key=" + WorkingCodes._APIKEY);
    out.flush();
    out.close();
     
  15. Chri, 08.09.2009 #15
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Kann nicht funktionieren:)

    "/user.login" muss noch zur URL
    "?" muss weg
    also folgt: out.write("username=" + m_sUsername + "&password=" + m_sMD5Password +"&key=" + WorkingCodes._APIKEY);

    Und jetzt funktionierts!

    mfg Chri
     
  16. swordi, 08.09.2009 #16
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    immer wieder ne schwere geburt ;)
     
  17. MichaelS, 08.09.2009 #17
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    In meinem Thread findest du eine funktionierende klasse die alles kann, was de brauchst ;)
     
  18. Chri, 08.09.2009 #18
    Chri

    Chri Threadstarter Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Habs schon gesehen! Danke!
    Habs aber zum Glück schon vorher fertig gehabt, das was ich brauche!

    mfg Chri
     

Diese Seite empfehlen