2016-12-25 4 views
0

ich eine CookieStore definiert sich wie folgt:Umgang mit Java Cookie "Invalid Cookie" Fehler

CookieManager cookieManager = new CookieManager(); 
CookieHandler.setDefault(cookieManager); 
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); 

Jedes Mal, wenn ich eine Anfrage vervollständigen HttpURLConnection mit:

URL url = new URL(MY_URL); 
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); 

ich dies in meiner Ausgabe:

java.net.CookieManager put SEVERE: Invalid cookie for https://...: ; HttpOnly 

Wie soll ich mit dieser Nachricht umgehen?

Antwort

1

Sie müssen zuerst identifizieren, welche Art von Ausnahme ausgelöst wird. Vom Blick auf die Dokumentation für CookieManger: http://www.docjar.com/html/api/java/net/CookieManager.java.html

283      try { 
    284       cookies = HttpCookie.parse(headerValue); 
    285      } catch (IllegalArgumentException e) { 
    286       // Bogus header, make an empty list and log the error 
    287       cookies = java.util.Collections.EMPTY_LIST; 
    288       if (logger.isLoggable(PlatformLogger.SEVERE)) { 
    289        logger.severe("Invalid cookie for " + uri + ": " + headerValue); 
    290       } 
    291      } 

Es scheint, dass das Problem ist, dass Ihre Header für Ihre Anfrage nicht korrekt ist. Vielleicht möchte ich das untersuchen und hier ist ein Link von Beispielcode.

http://www.programcreek.com/java-api-examples/index.php?api=java.net.CookieManager

Auch wollen Sie wahrscheinlich die Chrom Debugger verwenden die tatsächliche Anforderung gesendet, um zu sehen und in der Regel wird es Ihnen mehr Informationen geben, warum die Anforderung fehlgeschlagen. Die Anfrage könnte falsch sein, die URL, an die Sie sie senden möchten, könnte ungültig sein, der Dienst, an den Sie die Anfrage senden, könnte bestimmte Parameter erwarten.

Aus dem Code scheint es die Header in der Antwort zu suchen. Die Antwort selbst enthält jedoch keine Header oder es ist etwas nicht in Ordnung und als Ergebnis wird HttpCookie.parse einen Fehler werfen.

Wenn Sie bei HttpCookies.parse aussehen wirft es eine Ausnahme, wenn:

Würfe:

IllegalArgumentException - if header string violates the cookie specification's syntax, or the cookie name contains llegal characters, or the cookie name is one of the tokens reserved for use by the cookie protocol 
NullPointerException - if the header string is null 

So Sie bei der Antwort suchen müssen und sehen, ob die Daten, die sie im Header gesetzt ist richtig .