# Selbes URL Objekt für alle Requests nutzen



## Neuling1245 (9. Dez 2012)

Ich bin noch recht neu in der Java Welt und programmiere eigentlich nur in C++. Ich versuche mich derzeit mit Java bei Facebook einzuloggen und habe dabei ein Problem.

Der Ablauf sieht so aus:

Ich erzeuge ein URL Objekt mit der Url www.facebook.com
Von dem response Header hole ich mir den Cookie mit getHeaderField("Set-Cookie");.
Ich erzeuge ein neues URL Objekt auf die URL bei der man sich bei Facebook einlogen kann und übergebe den Cookie mit this.connection.setRequestProperty("Cookie", this.cookie);.

Das Einloggen will aber nicht funktionieren, Punkt 1 und 2 funktionieren ohne Probleme. Ich vermute das es daran liegt das ich einen neuen Cookie zugewiesen bekomme nachdem ich ein neues URL Objekt erzeugt habe und mich dann erneut zu Facebook verbinde. Schließlich folgt nach der Erzeugung ja soetwas: (HttpsURLConnection) this.facebook.openConnection();

Kann ich die URL von dem alten URL-Objekt auch noch ändern und dann einen anderen Request durchführen, sodass man nicht erneut eine Verbinung aufbauen muss? Source kann ich gleich posten wenn ihr den Code benötigt, muss es dann noch ein wenig verkleinern.

lg
Thomas


----------



## tröööt (9. Dez 2012)

ich glaube du haust hier einiges durch ein ander ...

jedes URLConnection-objekt entspricht genau EINEM request ... denn nach dem die daten übertragen wurden schließt ja der server die verbindung ...

ich denke das problem dürfte viel eher das sein das dir der server beim login mit ner 302 oder der gleichen antwortet auf die du entsprechend reagieren musst ...

ich versteh zwar nicht warum du einen browser nach ahmen willst wenn FB ne gute API anbietet ... aber wenn dann solltest du mal mit WireShark gucken was dein borwser sendet und was dein java-code ... und dann deinen java-code anpassen das er das gleiche sendet ... ansonsten wirst du vom server aus n denied bekommen ...

btw : das cookie ändert sich nicht ... du musst nur das richtig cookie verwenden ...


----------



## Neuling123456 (9. Dez 2012)

Ok, das wusste ich nicht, also bleibt mir nichts anderes übrig als jedes mal ein neues URL Objekt zu erzeugen... Ich weiß das es eine API gibt, dennoch würde ich es gerne selber probieren um dadurch etwas zu lernen. Ich sniffe mal ein wenig mit Wireshark.


----------



## tröööt (10. Dez 2012)

naja ... jede seite hat ihre eigene URL ... also musst du auch für jede URL ein eigenes neues URL-objekt nutzen ... und davon ausgehen auch jeweils neue URLConnection-Objekte ...

etwas anderes wäre es mit HTTP/1.1-keepalive ... aber das ist eher darauf ausgelegt das für eine komplette seite mit allen referenzen wie scripte und bilder eine verbindung genutzt wird um die geschwindigkeit zu steigern ... das dürfte dir aber bei deinem problem recht wenig helfen


----------



## Marcinek (10. Dez 2012)

Dann nimm zum üben eine andere Seite als Facebook. 


Die werden es unterbinden so die requests zu übermitteln. 

Mach dir eine kleine hp die nach dem Login nen Cookie setzt.


----------



## ARadauer (10. Dez 2012)

Neuling1245 hat gesagt.:


> Ich versuche mich derzeit mit Java bei Facebook einzuloggen und habe dabei ein Problem.



Mhn vergiss das gleich wieder... da wird so viel über ajax nachgeladen, da wirst du mit einer url connection nicht glücklich.... was willst du machen? Dinge auslesen, was posten... alles kein Problem... da gibt es eine (super) API düfür... das kann dir helfen, RestFB - A Lightweight Java Facebook Graph API and Old REST API Client


----------



## Neuling123456 (10. Dez 2012)

Funktionen die ich implementieren will sind...

Freunde hinzufügen
Status posten
Posts von Freunden liken

Wenn das alles mit dieser API geht und ich mich auch damit ganz einfach einloggen kann, dann kann ich doch auch einfach alles mit sniffen was von der JVM ausgeht, mit WPE Pro zum Beispiel und das dann per URL Klasse nachahmen? An meinen programmier Kenntnissen wird es nicht scheitern, ich habe nur sehr wenig Ahnung vom HTTP-Protokoll.

Eine Frage zur RestFB API noch: Kann ich mit der API überhaupt die 3 genannten Punkte dort oben abdecken?

lg
Thomas


----------



## trääät (11. Dez 2012)

wie ich ja bereits sagte bietet FB eine komplette API an ... was genau diese alles abdeckt und was damit nicht möglich ist erfährt man auf der dev-seite der api ... (google mal nach) ...
ich selbst befasse mich nicht mit gesichtsbuch da ich es nicht unterstütze wenn so n halbwüchsiger ami mit nem deutschen namen milliarden damit macht meine privatsphäre zu verkaufen ...

an sich : ja klar ist es auch möglich einen browser soweit zu "imitieren" und alles mit java soweit nachzubauen das die übertragenen daten dann denen eines "gewöhnlichen" browsers gleichen ... aber in wie weit die FB-server das kontrollieren kann man nicht sagen ... ich würde aber behaupten das es da so einiges gibt was man aushebeln muss ...
und wenn du es dir selbst zu traust und mit sniffern a la Wireshark umgehen kannst sollte das auch kein problem sein ... zu mal dir was HTTP angeht dir die API von java hilft ...

aber es ist mit der FB-API und einem passenden modul für java (genauer gesagt einer REST-lib) bestimmt deutlich einfacher ... anstatt mit zig URL's einen browser nachzuahmen ...


----------

