我正在用Java编写一些软件。
我正在测试cookie管理功能,但我似乎无法使cookie工作。我写了一个删除cookie的快速PHP,我在浏览器中对它进行了测试,并且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的具体实现。但是,它只是拒绝为我工作,我做错了什么?
答案 0 :(得分:1)
在检查cookie存储之前,您需要读取HTTP头字段,并且调用openConnection()
不会读取HTTP头。请参阅the javadoc的前几行。
如果在处理过程中需要cookie,则调用getInputStream()
连接并解析头字段,URLConnection中的其他一些方法也是如此。