我使用以下内容向网站发出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会在某个时候到期吗? 我错过了什么吗? 感谢
答案 0 :(得分:0)
您无法在CookieManager级别控制此操作,但直接在Cookie本身内控制此操作。 HttpCookie
setMaxAge(long expiry)
设置了Cookie的最大年龄,以秒为单位。
正如您在HttpCookie的源代码,MAX_AGE_UNSPECIFIED
和getMaxAge()
方法文档中看到的那样,默认值设置为 <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将一直存在,直到浏览器关闭。
负值表示cookie不会持久存储,并在Web浏览器退出时被删除。