我使用以下内容向站点发出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会在某个时候到期吗?我是不是遗漏了什么?谢谢
发布于 2018-05-21 17:43:37
您不能在cookie级别上控制这一点,但可以直接在CookieManager本身中进行控制。HttpCookie让setMaxAge(long expiry)设置cookie的最长期限(以秒为单位)。
正如您在HttpCookie的源代码(其中是MAX_AGE_UNSPECIFIED )和getMaxAge()方法文档中看到的那样,默认值被设置为-1。
默认情况下为
,-1表示cookie将一直存在到浏览器关闭。
setMaxAge(long expiry)声明了以下内容:
cookie负值表示cookie不会永久存储,在
浏览器退出时将被删除。
https://stackoverflow.com/questions/50445678
复制相似问题