Как получить доступ / сохранить куки в Java - PullRequest
3 голосов
/ 25 мая 2011

Я пишу некоторые программы на Java.

Я тестирую функциональность управления файлами 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. Тем не менее, он просто отказывается работать для меня, что я делаю не так?

1 Ответ

1 голос
/ 25 мая 2011

Вам нужно прочитать поля заголовка HTTP перед проверкой хранилища файлов cookie, и при вызове openConnection() заголовки HTTP не читаются. Посмотрите первые несколько строк javadoc .

Если вам нужны куки во время обработки, вызов getInputStream() соединяет и анализирует поля заголовка, как и некоторые другие методы в URLConnection.

...