我已定义CookieStore
如下:
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
我该如何处理这条消息?
答案 0 :(得分: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
因此,您需要查看响应并查看它们在标题中放置的数据是否正确。