How to save HtmlUnit cookies to a file?

梦想与她 提交于 2019-12-18 12:24:48

问题


I'd like to save HtmlUnit cookies to a file and on next run load them from that one. How can I do that? Thanks.


回答1:


    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();
    }



回答2:


The above code works only with HtmlUnit (Im not criticizing or anything) i.e. exports only in a format that can be read by HtmlUnit agin.

Here is a more generic one: (This works with 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() + ";");
    }

Now, Make String out of those println(s) in the for loop. write them to a text file.

works with curl :

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

-b can be changed with -c too.. check curl docs...



来源:https://stackoverflow.com/questions/2237286/how-to-save-htmlunit-cookies-to-a-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!