Verwaltung von ServerVerbindung mit Cookies

Chri

Chri

Fortgeschrittenes Mitglied
0
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
 
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!:)
 
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
 
  • Danke
Reaktionen: Chri
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:
Zusätzliche Frage:Irgendwelche schnellen Ideen, wie ich ein Passwort als postparameter anhängen kann?:rolleyes:

mfg Chri
 
ist erklärt in meinem Thread... parameter data... funktioniert auch super
 
MichaelS schrieb:
ist erklärt in meinem Thread... parameter data... funktioniert auch super

ich gaub ich bin blind!
In welcher zeile steht das?:rolleyes:
 
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:
 
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
 
shini! Du bist ein genie!!!:)
mfg Chri
 
Dann bliebe nur noch das Problem mit dem Postparametern!:confused:
 
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
 
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 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
 
immer wieder ne schwere geburt ;)
 
In meinem Thread findest du eine funktionierende klasse die alles kann, was de brauchst ;)
 
Habs schon gesehen! Danke!
Habs aber zum Glück schon vorher fertig gehabt, das was ich brauche!

mfg Chri
 

Ähnliche Themen

S
Antworten
17
Aufrufe
530
jogimuc
J
B
Antworten
4
Aufrufe
433
bb321
B
5
Antworten
22
Aufrufe
1.369
590239
5
Zurück
Oben Unten