Java CookieManager或CookieHandler会过期吗?

时间:2018-05-21 09:25:45

标签: java cookies httpurlconnection

我使用以下内容向网站发出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会在某个时候到期吗? 我错过了什么吗? 感谢

1 个答案:

答案 0 :(得分:0)

您无法在CookieManager级别控制此操作,但直接在Cookie本身内控制此操作。 HttpCookie setMaxAge(long expiry)设置了Cookie的最大年龄,以秒为单位。

正如您在HttpCookie的源代码,MAX_AGE_UNSPECIFIEDgetMaxAge()方法文档中看到的那样,默认值设置为 <div id="videocontainer1"> <img src="images/youtube-labour_of_love.jpg" alt="Labour of love Dance" onclick="document.getElementById('videocontainer1').innerHTML = embedCode1;" height="500" width="600" /> </div>

  

默认情况下,-1表示cookie将一直存在,直到浏览器关闭。

setMaxAge(long expiry)声明如下:

  

负值表示cookie不会持久存储,并在Web浏览器退出时被删除。