zoukankan      html  css  js  c++  java
  • [HtmlParser]bug提交(含解决方案)A bug when set cookies


    htmlParser在设置cookies时存在bug,对于相同的domain,不能设置多个cookies.下面时偶提交的bug内容及解决办法.偶英语很烂--大家别笑话.:P

    There can't set many cookies to a domain,for example:

    public void testSetCookies() throws Exception
    {
    String urlString 
    = "http://sourceforge.net/projects/htmlparser";
    Parser parser 
    = this.buildParser(urlString);

    }

    private Parser buildParser(String urlString) throws 
    Exception
    {
    ConnectionManager manager 
    = 
    Parser.getConnectionManager ();
    Cookie cookie 
    = new Cookie ("name1""value1");
    manager.setCookie (cookie, 
    "sourceforge.net");

    cookie 
    = new Cookie ("name2""value2");
    manager.setCookie (cookie, 
    "sourceforge.net");

    return new Parser(urlString);
    }

    only the first cookie was set to the
    domain "sourceforge.net".

    This bug comes with the
    method:ConnectionManager.setCookie (Cookie cookie,
    String domain),there can't add a new cookie to a exist
    domain.

    It is ok if repleace the method with under codes :

    public void setCookie (Cookie cookie, String domain)
    {
    String path;
    Vector cookies;
    Cookie probe;

    if (null != cookie.getDomain ())
    domain 
    = cookie.getDomain ();
    path 
    = cookie.getPath ();
    if (null == mCookieJar)
    mCookieJar 
    = new Hashtable (); // turn on 
    cookie processing
    cookies 
    = (Vector)mCookieJar.get (domain);
    if (null != cookies)
    {
    boolean isNewCookie = true;

    for (int j = 0; j < cookies.size (); j++)
    {
    probe 
    = (Cookie)cookies.elementAt (j);


    if (probe.getName ().equalsIgnoreCase 
    (cookie.getName ()))
    {
    if(isNewCookie == true) isNewCookie = 
    false;
    // we keep paths sorted most specific to 
    least
    if (probe.getPath ().equals (path))
    {
    cookies.setElementAt (cookie, j); 
    // 
    replace
    break;
    }
    else if (path.startsWith (probe.getPath ()))
    {
    cookies.insertElementAt (cookie, j);
    break;
    }
    }
    }

    if(isNewCookie == true)
    {
    cookies.addElement(cookie);
    }
    }
    else
    // new cookie list needed
    cookies = new Vector ();
    cookies.addElement (cookie);
    mCookieJar.put (domain, cookies);
    }
    }
    版权所有,欢迎转载
  • 相关阅读:
    BackgroundWorker
    Devexpress 10
    Winform常用控件的使用(一)
    Composite UI Application Block(CAB)
    HTML CSS简单总结
    C# JSON字符串序列化与反序列化常见模型举例
    HTML 调用iscroll.js主要事项
    HTML5 Socket通信
    Webservice加上SoapHeader验证方式
    动态调用Webservice 支持Soapheader身份验证(转)
  • 原文地址:https://www.cnblogs.com/xiaotie/p/266570.html
Copyright © 2011-2022 走看看