如何在Java中访问/保存cookie

时间:2011-05-25 16:04:51

标签: java cookies save

我正在用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的具体实现。但是,它只是拒绝为我工作,我做错了什么?

1 个答案:

答案 0 :(得分:1)

在检查cookie存储之前,您需要读取HTTP头字段,并且调用openConnection()不会读取HTTP头。请参阅the javadoc的前几行。

如果在处理过程中需要cookie,则调用getInputStream()连接并解析头字段,URLConnection中的其他一些方法也是如此。