2016-12-25 42 views
0

我已經定義了CookieStore如下:與Java CookieManager交易 「Cookie無效」 的錯誤

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

每當使用HttpURLConnection我完成一個請求:

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

我得到這個在我的輸出:

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

我應該如何處理此消息?

回答

1

您需要先確定拋出哪種異常。通過觀察對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      } 

看來,問題是,你的標題爲您的要求是不正確。可能想看看,這裏是示例代碼的鏈接。

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

而且你可能想使用Chrome調試器看到正在發出的實際要求,通常它會給你的請求失敗的原因的詳細信息。請求可能不正確,您嘗試將其發送到的URL可能無效,您發送請求的服務可能會期望某些參數。

從代碼,它似乎尋找響應中的標題。但是,響應本身或者不包含頭文件,或者它有什麼問題,因此HttpCookie.parse會引發錯誤。

如果你看看HttpCookies.parse它拋出一個異常,如果:

拋出:

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 

所以,你需要看看反應,看他們是否放在標題中的數據是正確的。