Wie Sie die Cookies bei Http-Get-Methode mit Java
Möchte ich ein Handbuch BEKOMMEN, mit cookies, um herunterzuladen, und analysieren Sie eine web-Seite. Ich benötige zum extrahieren der security-token, um einen post im forum. Ich habe die Anmeldung gelesen habe, die Reaktion und extrahiert die cookies, (3 paar (name,Wert) ). Ich schrieb dann die Zeichenfolge, die die cookies so:
CookieString="name1=value1; name2=value2; name3=value3"
Ich dann Folgendes tun
HttpURLConnection connection
connection = (HttpURLConnection)(new URL(Link).openConnection());
connection.setRequestMethod("GET");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Cookie", CookieString );
connection.connect();
Dann Las ich die Seite aber es zeigt, dass bin ich nicht eingeloggt im forum. Was mache ich falsch?
edit: ich weiß, dass muss ich extrahieren Sie die Sicherheits-token-wenn ich will, um einen post zu machen. Mein Gedankengang war, dass, um zu extrahieren, die ich brauche, um diese bestimmte Seite. Aber für den security-token als hidden-Feld, das ich online sein muss, so brauchte ich die cookies. Aber wenn ich die Seite BEKOMMEN und ich habe die cookies wie oben erwähnt, bekomme ich die Seite als Gast, es zeigt, dass ich nicht online bin und der Wert von Sicherheits-token ist ein Gast ist für mich nicht brauchbar. Ich check den link, den Sie gab mir, und hoffentlich wird eine Lösung finden.
InformationsquelleAutor der Frage fysob | 2010-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher zu sein, sollten Sie sammeln die cookies aus dem Antwort
Set-Cookie
Header. Um Sie zurück zu senden in die nachfolgenden Anforderungen, dann sollten Sie Sie eins nach dem anderen mitURLConnection#addRequestProperty()
.Grundsätzlich:
Den
split(";", 2)
ist es, um loszuwerden, die cookie-Attribute, die irrelevant für die server-Seite wieexpires
path
usw.Für eine convenienced HTTP-client würde ich vorschlagen, einen Blick auf Apache HttpComponents Client. Es kann mit allen die cookie-Zeug mehr transparent.
Siehe auch:
Update: gemäß der Kommentare, dies ist nicht ein cookie-problem. Eine falsche Anfrage-token bedeutet, dass der server CSRF/bot Prävention builtin (um zu verhindern, dass Menschen wie Sie). Sie müssen zu extrahieren, wird das token als hidden-input-Feld aus der angeforderten Seite mit dem Formular und senden Sie es als request-parameter. Jsoup kann nützlich sein, um alle extrahieren " (hidden) input-Felder. Vergessen Sie nicht, übergeben Sie die name-Wert-paar von der Taste, die Sie möchten, um zu "drücken" programmatisch. Siehe auch den oben genannten link für weitere Hinweise.
In der Zukunft, Sie sollten wirklich mehr Klarheit über den genauen Fehler abrufen und nicht denke, etwas in der wildnis. Copypaste die genaue Fehlermeldung und so weiter.
InformationsquelleAutor der Antwort BalusC
Vorausgesetzt, die cookie-Werte sind nicht hart codiert, sondern erhalten Sie von einer vorherigen Anfrage, ist es wahrscheinlich am einfachsten zu verwenden, die
CookieHandler
Klasse.Dann Ihre
HttpURLConnection
speichert automatisch alle cookies, die er empfängt und sendet Sie zurück mit der nächsten Anforderung zum gleichen host.InformationsquelleAutor der Antwort finnw
Obige code funktioniert für das senden mehrere cookies nur verwenden setRequestProperty statt addRequestProperty. Die arbeiten code:
InformationsquelleAutor der Antwort Rohit Haval