Verwaltung von ServerVerbindung mit Cookies

  • 17 Antworten
  • Neuester Beitrag
Diskutiere Verwaltung von ServerVerbindung mit Cookies im Android App Entwicklung im Bereich Betriebssysteme & Apps.
Chri

Chri

Fortgeschrittenes Mitglied
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
 
Chri

Chri

Fortgeschrittenes Mitglied
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!:)
 
S

Shinigami

Erfahrenes Mitglied
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

Chri

Fortgeschrittenes Mitglied
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:
Chri

Chri

Fortgeschrittenes Mitglied
Zusätzliche Frage:Irgendwelche schnellen Ideen, wie ich ein Passwort als postparameter anhängen kann?:rolleyes:

mfg Chri
 
M

MichaelS

Erfahrenes Mitglied
ist erklärt in meinem Thread... parameter data... funktioniert auch super
 
Chri

Chri

Fortgeschrittenes Mitglied
MichaelS schrieb:
ist erklärt in meinem Thread... parameter data... funktioniert auch super
ich gaub ich bin blind!
In welcher zeile steht das?:rolleyes:
 
Chri

Chri

Fortgeschrittenes Mitglied
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:
 
S

Shinigami

Erfahrenes Mitglied
Chri schrieb:
connection.setRequestProperty("set-cookie", m_sHopSession);
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
 
Chri

Chri

Fortgeschrittenes Mitglied
shini! Du bist ein genie!!!:)
mfg Chri
 
Chri

Chri

Fortgeschrittenes Mitglied
Dann bliebe nur noch das Problem mit dem Postparametern!:confused:
 
S

Shinigami

Erfahrenes Mitglied
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
 
Chri

Chri

Fortgeschrittenes Mitglied
MichaelS schrieb:
ist erklärt in meinem Thread... parameter data... funktioniert auch super
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();
 
Chri

Chri

Fortgeschrittenes Mitglied
Chri schrieb:
out.write("/user.login?username=" + m_sUsername + "&password=" + m_sMD5Password +"&key=" + WorkingCodes._APIKEY);
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
 
S

swordi

Lexikon
immer wieder ne schwere geburt ;)
 
M

MichaelS

Erfahrenes Mitglied
In meinem Thread findest du eine funktionierende klasse die alles kann, was de brauchst ;)
 
Chri

Chri

Fortgeschrittenes Mitglied
Habs schon gesehen! Danke!
Habs aber zum Glück schon vorher fertig gehabt, das was ich brauche!

mfg Chri