Как сохранить куки HtmlUnit в файл? - PullRequest
11 голосов
/ 10 февраля 2010

Я хочу сохранить файлы cookie HtmlUnit в файл и при следующем запуске загрузить их из этого файла. Как я могу это сделать? Спасибо.

Ответы [ 2 ]

22 голосов
/ 10 февраля 2010
    public static void main(String[] args) throws Exception {
        LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

        File file = new File("cookie.file");
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
        Set<Cookie> cookies = (Set<Cookie>) in.readObject();
        in.close();

        WebClient wc = new WebClient();

        Iterator<Cookie> i = cookies.iterator();
        while (i.hasNext()) {
            wc.getCookieManager().addCookie(i.next());
        }

        HtmlPage p = wc.getPage("http://google.com");

        ObjectOutput out = new ObjectOutputStream(new FileOutputStream("cookie.file"));
        out.writeObject(wc.getCookieManager().getCookies());
        out.close();
    }
3 голосов
/ 13 мая 2013

Приведенный выше код работает только с HtmlUnit (я не критикую или что-то) т.е. экспортирует только в формате, который может быть прочитан agin HtmlUnit.

Вот более общий пример: (Это работает с curl)

CookieManager CM = WC.getCookieManager(); //WC = Your WebClient's name
    Set<Cookie> set = CM.getCookies();
    for(Cookie tempck : set)    {
        System.out.println("Set-Cookie: " + tempck.getName()+"="+tempck.getValue() + "; " + "path=" + tempck.getPath() + ";");
    }

Теперь, сделайте String из этих println в цикле for. запишите их в текстовый файл.

работает с curl:

curl -b "path to the text file" "website you want to visit using the cookie"

-b также можно изменить с помощью -c .. проверьте документацию curl ...

...