Java 如何将HtmlUnit Cookie保存到文件?

Java 如何将HtmlUnit Cookie保存到文件?,java,htmlunit,Java,Htmlunit,我想将HtmlUnit cookies保存到一个文件中,然后在下次运行时从该文件中加载它们。我该怎么做?谢谢。公共静态void main(字符串[]args)引发异常{ public static void main(String[] args) throws Exception { LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logg

我想将HtmlUnit cookies保存到一个文件中,然后在下次运行时从该文件中加载它们。我该怎么做?谢谢。

公共静态void main(字符串[]args)引发异常{
    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();
    }
LogFactory.getFactory().setAttribute(“org.apache.commons.logging.Log”、“org.apache.commons.logging.impl.NoOpLog”); File File=新文件(“cookie.File”); ObjectInputStream in=新ObjectInputStream(新文件输入流(文件)); 在.readObject()中设置cookies=(Set); in.close(); WebClient wc=新的WebClient(); 迭代器i=cookies.Iterator(); while(i.hasNext()){ wc.getCookieManager().addCookie(i.next()); } HtmlPage p=wc.getPage(“http://google.com"); ObjectOutput out=新的ObjectOutputStream(新的FileOutputStream(“cookie.file”); out.writeObject(wc.getCookieManager().getCookies()); out.close(); }
以上代码仅适用于HtmlUnit(我不是在批评什么) i、 e.仅以HtmlUnit agin可以读取的格式导出

这里有一个更通用的方法:(这适用于curl)


-b也可以用-c来改变。。检查curl docs…

我希望有更多的人像你一样发表评论。简单。回答了这个问题。明亮的非常感谢你!使用htmlunit 2.23
wc.getCookieManager().addCookie(i.next())未导致在下一个请求中发送cookie(检查com.gargoylesoftware.htmlunit.Webclient和com.gargoylesoftware.htmlunit.WebRequest的代码,其中未使用CookieManager)。我只能用一个新的请求传递cookie(即手动构建WebRequest)
ObjectOutput
是一个接口,末尾的第三条语句需要是
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(“cookie.file”)
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() + ";");
    }
curl -b "path to the text file" "website you want to visit using the cookie"