我使用以下命令向站点发出HTTP请求:
//首次调用服务器时执行
static {
cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);
}
以下是实际的调用
BufferedReader reader = null;
HttpURLConnection conn = null;
URL url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0");
//I added these 2 lines as a trial to fix this problem but failed
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);
conn.connect();
InputStream in = conn.getInputStream();
...
上面的代码在一段时间内效果很好,但在某些时候(确切地不知道多少时间),我得到的响应是我的cookie被禁用,我应该启用它们。重新启动服务器会使它再次工作,直到再次发生,依此类推...
cookieManager和cookieHandler在某个时候到期?
我想念什么吗?
谢谢
最佳答案
您无法在CookieManager级别上进行控制,而只能在Cookie本身内进行控制。 HttpCookie
具有setMaxAge(long expiry)
设置cookie的最长生存时间(以秒为单位)。
正如您在HttpCookie的源代码(MAX_AGE_UNSPECIFIED
)和getMaxAge()
方法文档中看到的那样,默认值设置为-1
。
默认情况下,-1表示cookie将一直保留到浏览器关闭为止。setMaxAge(long expiry)
指出以下内容:
负值表示cookie不会持久存储,并且在Web浏览器退出时将被删除。
关于java - Java CookieManager或CookieHandler到期?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50445678/