Die Methode
getHeaderField()
funktioniert nicht für mich
Sie fragen das im Kontext von java.net.URLConnection
, oder? Nein, das Abrufen der HTTP-Antwortheader ist mit URLconnection
nicht möglich. Sie müssen auf die Socket-Programmierung zurück greifen. Hier ist ein SSCCE , einfach kopieren und nicht ausführen.
Um zu vermeiden, dass SO von allen, die dieses Snippet ausprobieren, überlastet wird, sieht die Ausgabe folgendermaßen aus:
%Vor%Weitere Informationen zum Senden von HTTP-Anfragen auf niedriger Ebene finden Sie in der HTTP-Spezifikation .
Sie möchten jedoch wahrscheinlich verwenden getHeaderFields()
Methode, um stattdessen einen Header mit mehreren Werten abzurufen. Die getHeaderField()
gibt nämlich nur den letzten Wert zurück, wie in der verknüpften API-Dokumentation.
Nicht genau "roh", aber prägnant:
%Vor%Wenn Sie sich Sorgen machen, dass einige Header verloren gehen, verwenden Sie:
%Vor%PS: Besser spät als nie. :)
Der einfachste Weg ist die Verwendung des getHeaderFields()
Methode von URLConnection
. Hier ist ein Code, der etwas Ähnliches macht.
Spät zur Party, aber hier ist die einfachste Lösung. Implementieren Sie einfach CookieStore. (Oder verwenden Sie die Standardimplementierung, und sorgen Sie dafür, dass die Cookies Ihren nachfolgenden Anrufen hinzugefügt werden.)
Legen Sie Ihren Cookie-Speicher als Standard-Cookie-Manager fest
%Vor%Und jeder neue Cookie wird Ihnen in Ihrem CookieStore hinzugefügt (). Ich hatte das gleiche Problem mit Params überschrieben werden, indem Sie den gleichen Namen "Set-Cookie" in einer einzigen Anfrage, und jetzt bekomme ich sowohl den Cookie und die SessionId.