我正在用java编写一些软件。
我正在测试cookie管理功能,但似乎无法让cookie正常工作。我写了一个快速的php删除一个cookie,我在我的浏览器中测试了它,cookie删除得很好。
但是,请查看以下代码:
CookieManager cManager = new CookieManager();
CookieHandler.setDefault(cManager);
try
{
URL url = new URL("http://localhost/_techfactory/apage.php");
URLConnection connection = url.openConnection();
CookieStore cookieJar = cManager.getCookieStore();
List<HttpCookie> cookies = cookieJar.getCookies();
for ( HttpCookie cookie : cookies)
{
System.out.print(cookie);
}
Boolean isittrue = cookies.isEmpty();
System.out.print(isittrue);
BufferedReader bin = new BufferedReader ( new InputStreamReader(connection.getInputStream()));
String line;
while ( ( line = bin.readLine()) != null )
System.out.print(line);
}
catch ( Exception e )
{
System.out.println(e);
}
这虽然语法正确,但除了页面中的html之外,不输出任何内容。现在,不管怎么说,cookiemanager实现是cookiehandler、cookiepolicy和cookiestore的具体实现。然而,它只是拒绝为我工作,我做错了什么?
最佳答案
您需要在检查cookie存储之前读取http头字段,并且调用openConnection()
不会读取http头。请参阅the javadoc的前几行。
如果在处理过程中需要cookie,调用getInputStream()
将连接并解析头字段,urlconnection中的其他一些方法也是如此。
关于java - 如何使用Java访问/保存Cookie,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6127455/